【问题标题】:how to use array_map/array_walk function for multidimensional array如何将array_map/array_walk函数用于多维数组
【发布时间】:2014-06-18 12:34:58
【问题描述】:

我有以下多维数组:

array (size=2)
      10 => 
        array (size=7)
          1 => 
            array (size=4)
              0 => string '10view1' (length=7)
              1 => string '10ins1' (length=6)
              2 => string '10edit1' (length=7)
              3 => string '10del1' (length=6)
          2 => 
            array (size=4)
              0 => string '10view2' (length=7)
              1 => string '10ins2' (length=6)
              2 => string '10edit2' (length=7)
              3 => string '10del2' (length=6)
          3 => 
            array (size=4)
              0 => string '10view3' (length=7)
              1 => string '10ins3' (length=6)
              2 => string '10edit3' (length=7)
              3 => string '10del3' (length=6)
      11 => 
        array (size=7)
          1 => 
            array (size=4)
              0 => string '11view1' (length=7)
              1 => string '11ins1' (length=6)
              2 => string '11edit1' (length=7)
              3 => string '11del1' (length=6)
          2 => 
            array (size=4)
              0 => string '11view2' (length=7)
              1 => string '11ins2' (length=6)
              2 => string '11edit2' (length=7)
              3 => string '11del2' (length=6)
          3 => 
            array (size=4)
              0 => string '11view3' (length=7)
              1 => string '11ins3' (length=6)
              2 => string '11edit3' (length=7)
              3 => string '11del3' (length=6)

我想把它转换成数组,比如:

1 => array(10 => array( 
              0 => string '10view1' (length=7)
              1 => string '10ins1' (length=6)
              2 => string '10edit1' (length=7)
              3 => string '10del1' (length=6)),
           11 => array(
              0 => string '11view1' (length=7)
              1 => string '11ins1' (length=6)
              2 => string '11edit1' (length=7)
              3 => string '11del1' (length=6) 
           )
        ),
2 => array(
          10 => array(
             0 => string '10view2' (length=7)
              1 => string '10ins2' (length=6)
              2 => string '10edit2' (length=7)
              3 => string '10del2' (length=6)
          ),
          11 => array(
               0 => string '11view2' (length=7)
              1 => string '11ins2' (length=6)
              2 => string '11edit2' (length=7)
              3 => string '11del2' (length=6)
          )
      ),
3 => array(
        10 => array(
             0 => string '11view3' (length=7)
              1 => string '11ins3' (length=6)
              2 => string '11edit3' (length=7)
              3 => string '11del3' (length=6)
          ),
          11 => array(
             0 => string '11view1' (length=7)
              1 => string '11ins1' (length=6)
              2 => string '11edit1' (length=7)
              3 => string '11del1' (length=6) 
          )
    )

请帮我解决这个问题,谢谢。

如何使用 foreach 循环实现这一点对我来说非常明显,但我想知道是否可以使用 array_map 或 array_walk 等 PHP 数组函数来实现这一点。回调函数请使用 PHP 5.3。谢谢!

【问题讨论】:

标签: php arrays multidimensional-array


【解决方案1】:

使用数组映射可以这样实现

<?php

function merge_array($n, $m)
{
   $data = array();

   $data[10] = $n;
   $data[11] = $m;

   return $data;

}

$c = array_map("merge_array", $array[10], $array[11]);
print_r($c);

使用for循环很简单,你可以这样实现

$count_10 = count($array[10]);

$count_11 = count($array[11]);

$count = ($count_10>$count_11)?$count_10:$count_11;

$data = array();

for($i=0; $i<$count; $i++)
{

  if(isset($array[10][$i]))
  {
       $data[$i][] =  $array[10][$i];
  }

  if(isset($array[11][$i]))
  {
       $data[$i][] =  $array[11][$i];
  }

}

【讨论】:

  • 感谢您的回复,但我在此问题中使用了剪切数组,实际上我的数组是动态的,所以如果您有更多想法,请告诉我。
猜你喜欢
  • 1970-01-01
  • 2012-01-06
  • 2011-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-14
  • 1970-01-01
  • 2019-12-18
相关资源
最近更新 更多