【问题标题】:Array Map a PHP Multidimensional ArrayArray 映射 PHP 多维数组
【发布时间】:2017-06-19 10:47:29
【问题描述】:

有一个多维数组

$template=Array (
 [0] => Array ( [id] => 352 [name] => a ) 
 [1] => Array ( [id] => 438 [name] => b ) 
 [2] => Array ( [id] => 351 [name] => c ) 
               ) 

还有一个数组映射函数

function myfunction()
{

return "[selected]=>null";
}
print_r(array_map("myfunction",$template));

导致

Array ( 
   [0] => [selected]=>null 
   [1] => [selected]=>null 
   [2] => [selected]=>null
    )

我如何映射数组来得到这个结果

Array (  
        [0] => Array ( [id] => 352 [name] => a [selected] => null)  
        [1] => Array ( [id] => 438 [name] => b  [selected] => null)  
        [2] => Array ( [id] => 351 [name] => c  [selected] => null) 
    )

【问题讨论】:

  • 这个问题没有问题。
  • 你看过array_map()的文档吗?

标签: php arrays multidimensional-array array-map


【解决方案1】:

您需要将值添加到每个给定数组(在回调中),例如:

<?php

$in = [
    [ 'id' => 352, 'name' => 'a' ],
    [ 'id' => 438, 'name' => 'b' ],
    [ 'id' => 351, 'name' => 'c' ],
];

$out = array_map(function (array $arr) {
    // work on each array in the list of arrays
    $arr['selected'] = null;

    // return the extended array
    return $arr;
}, $in);

print_r($out);

演示:https://3v4l.org/XHfLc

【讨论】:

    【解决方案2】:

    你没有把 $template 当作一个数组来处理,你的函数应该是这样的:

    function myfunction($template)
    {
        $template['selected'] = 'null';
        return $template;
    }
    

    【讨论】:

      【解决方案3】:

      你可以通过下面提到的某种方式来实现,

      function array_push_assoc(&$array, $key, $value){
          foreach($array as $k => $v)
              $array[$k][$key] = $value;
       return $array;
      }
      $result = array_push_assoc($template, 'selected','null');
      print_r($result);
      

      添加到关联数组的每个索引。

      这里正在工作code

      【讨论】:

        猜你喜欢
        • 2018-02-27
        • 2017-01-01
        • 2018-02-22
        • 1970-01-01
        • 2016-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-05-06
        相关资源
        最近更新 更多