【问题标题】:Create an array from an associative array using one of its value in a key value pair使用键值对中的一个值从关联数组创建一个数组
【发布时间】:2022-01-12 11:14:12
【问题描述】:

我有一个名为 $data 的以下关联数组。这是一些相同的键值对

 Array
   (
      [0] => Array
      (
        [id] => 1
        [config_id] => 31
        [language] => "English"
      )

      [1] => Array
      (
        [id] => 2
        [config_id] => 33
        [language] => "English"
      )
      [2] => Array
      (
        id] => 3
        [config_id] => 32
        [language] => "French"
      )

   )

我想将此数组转换为

Array
   (
      ["English"] => Array(
       [0]=> Array
        (
        [id] => 1
        [config_id] => 31
       )

       [1] => Array
       (
        [id] => 2
        [config_id] => 33
       )
      )
      ["French"] => 
      Array(
       [0]=> Array
        (
        [id] => 3
        [config_id] => 32
        )
      )
     )
   )

我需要语言作为输出数组中的键,谁能帮我解决这个问题?提前致谢。 我尝试了以下代码,但只打印了最后一个数组值

     $arry = array();
     foreach ($data as $val) {
        
        $arry[$val->language]["id"] =  $val->id;
        $arry[$val->language]["config_id"] =  $val->config_id;
     }

【问题讨论】:

  • 你卡在哪里了?你试过什么?这里和其他地方有很多关于操作数组的信息和以前的问题。我们很乐意帮助人们,但您通常需要表现出善意的尝试,首先要自己弄清楚。我们是志愿者,这是我们的空闲时间,如果可以通过一些先前的研究和努力来解决问题,我们不需要解决问题。 “任何人都可以帮助我”不是关于 SO 的有效问题 - 您需要针对实际编码问题提出具体/关注的问题,而不仅仅是要求其他人为您编写所有内容。
  • @ADyson 抱歉,我参考了之前的问题并尝试了一些代码,但只打印了最后一个数组值,这就是为什么我不愿发布尝试过的代码
  • 你应该总是发布你的尝试,不要犹豫。这很有帮助,因为 a) 它表明您在寻求他人帮助之前确实自己尝试过,并且 b) 在许多情况下,代码几乎是正确的,只需要一个小修复——这正是这里最终发生的事情。这比有人从一开始就重写它更有效率。它还创建了一个更集中的问题,这可能对未来遇到相同问题的人更有帮助。 :-)

标签: php arrays associative-array


【解决方案1】:

您就快到了,只需一次性创建新数组,然后使用$arry[$val->language][] 在该新的或现有的语言键下创建一个新的子数组。

另外,$data 是一个或多个数组而不是对象数组,因此项目的寻址是错误的。

$arry = array();
foreach ($data as $val) {
    $arry[$val->language][] =  ['id' => $val['id'], 'config_id' => $val['config_id']];
}

【讨论】:

    猜你喜欢
    • 2019-01-01
    • 2012-10-22
    • 2018-02-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-07
    • 1970-01-01
    • 2015-06-29
    相关资源
    最近更新 更多