我试图获取一个多维数组的所有数组值,但问题是数组可以深1级或2、3或4,即深n级。
这是一些随机的,例如数组内容。
例1
Array
(
[0] => Array
(
[0] => name0
)
[1] => Array
(
[0] => name1
)
[2] => Array
(
[0] => name2
)
[3] => Array
(
[0] => name3
)
[4] => Array
(
[0] => name4
)
[5] => Array
(
[0] => name4
)
[6] => Array
(
[0] => name5
)
)
例2
Array
(
[0] => Array
(
[0] => name0
[1] => name1
[2] => name2
[3] => name3
[4] => name4
[5] => name5
)
)
我希望所有值都在新数组中。到目前为止,我已经尝试过这样的事情。
使用foreach
循环循环n次,它现在可以正常工作,但是我想知道它在程序上是否正确,或者是否有任何其他方法比此方法更快或更佳。
PHP代码。
<?php
$out_final_array = array ();
function foreach_values_endless($array){
global $out_final_array;
/* if its array */
if(is_array($array)){
/*run foreach loop to find more sub arrays */
foreach ($array as $value){
/* if value is an array send to own custom function */
if(is_array($value)){
$out_final_array[] = foreach_values_endless(array_values($value));
}else{
/* value is not an array*/
$out_final_array[] = $value;
}
}
}else{
/* value is not array */
$out_final_array[] = $array;
}
}
如果需要展平它,另一种方法是使用SPLRecursiveArrayIterator
和RecursiveIteratorIterator
:
$new_data = array();
$it = new RecursiveIteratorIterator(new RecursiveArrayIterator($data));
foreach($it as $v) {
$new_data[] = $v;
}
旁注:只需为其global
提供return
值即可:
function foreach_values_endless($array){
$data = array();
foreach ($array as $k => $v) {
if (is_array($v)) {
$data = array_merge($data, foreach_values_endless($v));
} else {
$data[] = $v;
}
}
return $data;
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句