【发布时间】:2012-11-05 18:21:14
【问题描述】:
我似乎无法从以下 foreach 代码中获得任何结果。我似乎无法递归地遍历数组,也无法制作该数组的较小数组。我只想从数组中挑选数据并将数据放在更小的数组中。
PHP 代码
$ii = 0;
foreach ($array as $key => $value)
{
$vv = $value;
if($vv== 'Alpha')
{
$ii++;
$list[$ii]['info'] = $vv; // my new array
}
}
PHP print_r($array)
Array
(
[0] => Array
(
[moredetails] => Array
(
[moredetails] => Array
(
[0] => Array
(
[productId] => 9999
[productName] => Name
[productType] => Alpha
[serialNumber] =>
[serviceItemId] => 123456
)
[1] => Array
(
[productId] => 8888
[productName] => Name
[productType] => Beta
[serialNumber] =>
[serviceItemId] => 123456
)
)
)
)
)
理想结果
Array
(
[0]
(
[productID] => 9999
[productName] => Name
{productType] => Alpha
)
)
找到解决方案!
function miniArray($array, &$simple, $ii)
{
foreach($array as $key => $value)
{
if(is_array($value)){
$ii++;
miniArray($value, $simple, $ii);
}
else
{
$simple[$ii][$key] = $value;
}
}
}
miniArray($service, $simple_array, 0);
【问题讨论】:
-
foreach不会递归循环遍历数组。您必须为此编写一个自定义函数。 -
我没有得到任何结果是有道理的。没有内置的 PHP 函数循环遍历多维数组?
-
不,不是真的,但是如果您查看 array_key_exists、array_search 等页面上的 PHP 手册,则可以选择大量递归数组搜索函数。
-
当然是。一种叫做
array_walk_recursive。我建议您在 PHP 手册中查看更多选项:php.net/arrays 以及数组本身的基础知识:php.net/array -
快速提示:如果您计划推出自己的循环机制,请记住数组可能会引用自身(或在子数组中),从而有效地导致无限递归。
标签: php multidimensional-array foreach