【问题标题】:How to combine associative array by indexes如何按索引组合关联数组
【发布时间】:2014-06-10 04:21:39
【问题描述】:

我在下面有这个关联数组:

Array
(
[0] => Array
    (
        [0] => Category
        [1] => fruit
        [2] => carbs
    )

[1] => Array
    (
        [0] => Day 1 - Program
        [1] => Eat banana
        [2] => Eat bread
    )

[2] => Array
    (
        [0] => Day 1 - record
        [1] => 
        [2] =>  
    )

)

每个数组索引都与其他数组中的相同索引相关。 我现在需要通过组合索引来创建 3 个数组。完成的数组将 看起来像这样:

Array 
(
    [0] => Array
    (
        [0] => Category
        [1] => Day 1 - Program
        [2] => Day 1 - record
    )

    [1] => Array
    (
        [0] => fruit
        [1] => Eat banana
        [2] => 
    )

    [2] => Array
    (
        [0] => carbs
        [1] => bread
        [2] =>  
    )
)

空槽是我知道放置一个文本框来记录数据的地方。 我试过嵌套 for 循环和其他东西,但没有任何效果。 如何根据索引将数组组合成多维数组?

【问题讨论】:

    标签: php arrays multidimensional-array indexing


    【解决方案1】:

    您可以通过嵌套循环来实现这一点。首先循环遍历子数组。在每次迭代中,循环遍历子数组中的元素,并将它们添加到结果数组中。这里重要的部分是我们用作$result 数组的索引。 $index 将是子数组中数组元素的位置。例如,Category 的索引为 0,因此它将被推送到 $result[0][]。

    foreach ($array as $sub) {
        foreach ($sub as $index => $val) {
            $result[$index][] = $val;
        }
    }
    
    print_r($result);
    

    Demo

    【讨论】:

    • 谢谢!我选择了你的,因为代码更短。伙计,我在那玩了 3 个小时。
    • @Naterade:很高兴看到你至少尝试过。是的,有时您会立即找到所需的内容,有时您必须花费数小时才能使其正常工作。但我敢肯定,凭借经验,您将能够更快地解决问题。干杯!
    【解决方案2】:

    这是一个快速的方法 - 它基本上可以翻转按键。顺便说一句,您拥有的第一个数组是索引数组,而不是关联数组。

    $input = array(
    array
        (
        "Category", "fruit", "carbs"
        ),
    
    array
        (
            "Day 1 - Program","Eat banana","Eat bread"
        ),
    
    array
        (
         "Day 1 - record", "", ""
        )
    
    );
    
    foreach ($input as $key => $array){
        foreach ($array as $k => $v){
            $output[$k][$key] = $input[$key][$k];
        }
    }
    
    print_r($output);
    

    【讨论】:

      【解决方案3】:
      $output = call_user_func_array(
          'array_map',
          array_merge(
              array(NULL),
              $input
          )
      );
      

      Demo

      【讨论】:

      • 自 PHP 5.6.0 起,array_map(null, ...$input)
      猜你喜欢
      • 2015-08-18
      • 1970-01-01
      • 2020-02-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-04
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多