首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何对多维数组使用array_map/ array _walk函数

如何对多维数组使用array_map/ array _walk函数
EN

Stack Overflow用户
提问于 2014-06-18 20:34:58
回答 1查看 473关注 0票数 1

我有以下多维数组:

代码语言:javascript
复制
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)

我想将其转换为数组,如下所示:

代码语言:javascript
复制
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。谢谢!

EN

回答 1

Stack Overflow用户

发布于 2014-06-18 20:48:08

使用数组映射可以实现如下所示

代码语言:javascript
复制
<?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循环非常简单,您可以像这样实现

代码语言:javascript
复制
$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];
  }

}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24285764

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档