3

哪种方法是翻转多维数组的最佳实践

Array ( [0] => Array ( [id] => 11 ) [1] => Array ( [id] => 14 ) )

成一个简单的数组?编辑: “扁平化”数组(感谢 arxanas 的正确词)

Array ( [0] => 11 [1] => 14 )

我看到了一些例子,但除了 foreach 循环、内爆或大函数之外还有更简单的方法吗?当然必须有一个 php 函数来处理这个问题。或不..?

4

4 回答 4

3
$array = array();
$newArray = array();

foreach ( $array as $key => $val )
{
    $temp = array_values($val);
    $newArray[] = $temp[0];
}

在此处查看实际操作:http: //viper-7.com/sWfSbD


在这里你有它的功能形式:

function array_flatten ( $array )
{
    $out = array();

    foreach ( $array as $key => $val )
    {
        $temp = array_values($val);
        $out[] = $temp[0];
    }

    return $out;
}

在此处查看实际操作:http: //viper-7.com/psvYNO

于 2012-08-20T01:56:42.740 回答
1

如果您有一个不应该是多维数组(具有相同的键和值)并且它具有多个维度深度的多维数组,您可以使用递归来循环遍历它并将每个项目附加到一个新数组中。只要确保不要为此头疼:)

于 2012-08-20T01:55:17.533 回答
1

您可以使用array_walk_recursive来展平数组。

$ret = array(); 
array_walk_recursive($arr, function($var) use (&$ret) { 
  $ret[] = $var; 
}); 
var_dump($ret); 
于 2012-08-20T02:24:30.743 回答
0

这是一个例子。(它可能不像 xdazz 那样“优雅”,但它是不使用“use”闭包的替代方案。)这就是数组的开始方式:

开始

array (size=2)
  0 => 
    array (size=1)
      'woeid' => string '56413072' (length=8)
  1 => 
    array (size=1)
      'woeid' => string '56412936' (length=8)      

然后你可能想要这样的东西:

目标

   array (size=2)
      0 => string '56413072' (length=8)
      1 => string '56412936' (length=8)

您可以使用array_walk_recursive

代码

$woeid = array();
array_walk_recursive($result['results']['Result'], function ($item, $key, $woeid) {
     if ($key == 'woeid') {                                       
           $woeid[] = $item;
     }
}, &$woeid);
于 2013-01-31T10:23:23.130 回答