繁体   English   中英

删除所有数字索引以仅具有关联数组

[英]Remove all numeric index to have an assoc array only

如果我在发出print_r()语句后有这样的数组:

//print_r($theArray)
array (size=5)
  0 => 
    array (size=1)
      'Animal' => string 'Dog' (length=3)

  1 => 
    array (size=1)
      'House' => string 'white house' (length=11)

  2 =>
    array (size=1)
      'Human' =>  
         array (size=3)
           'Africans' => string 'Nigroids' (length=8)
           'Europeans' => string 'Caucasoids' (length=8)
           'Asians' => string 'Mugoloids' (length=8)

如何删除所有数字索引,使上面的数组成为

array(
     'Animal' => string 'Dog' (length=3),
     'House' => string 'white house' (length=11),
     'Human' =>  
         array (size=3)
           'Africans' => string 'Nigroids' (length=8),
           'Europeans' => string 'Caucasoids' (length=8),
           'Asians' => string 'Mugoloids' (length=8)
    )

请帮忙吗?

一个foreach就够了

$new = array();
foreach($array as $arr) 
       $new  =  $new + $arr;
 print_r($new);

foreach()可以工作:

<?php
    $array[]    =   array('Animal'=>"dog");
    $array[]    =   array('House'=>"white");
    $array[]    =   array('Human'=>array("Africans"=>"af","Europeans"=>"ca","Asians"=>"as"));

    foreach($array as $arr) {
            foreach($arr as $key => $data) {
                    $new[$key]  =   $data;
                }
        }

    print_r($new);
?>

给你:

Array
(
    [Animal] => dog
    [House] => white
    [Human] => Array
        (
            [Africans] => af
            [Europeans] => ca
            [Asians] => as
        )

)

很简单:

$theArray = call_user_func_array('array_merge', $theArray);

这相当于以下内容,只需使用任意数量的数组:

$theArray = array_merge($theArray[0], $theArray[1], $theArray[2], ...);

或者,为了一些功能乐趣:

$theArray = array_reduce($theArray, 'array_merge', []);

这相当于:

$result = [];
foreach ($theArray as $array) {
    $result = array_merge($result, $array);
}
$theArray = $result;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM