PHP循环遍历多维数组并提取信息
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP循环遍历多维数组并提取信息相关的知识,希望对你有一定的参考价值。
我有一个从函数自动生成的多维数组。它看起来像这样:
Array(
[0] => Array
(
[0] => stdClass Object
(
[team] => Borussia Dortmund (gazeder)
)
[1] => stdClass Object
(
[team] => Real Madrid (Deycekslo)
)
)
[1] => Array
(
[0] => stdClass Object
(
[team] => Bayern Munchen (DaviiX)
)
[1] => stdClass Object
(
[team] => AS Roma (jakobmmm)
)
)
[2] => Array
(
[0] => stdClass Object
(
[team] => Chelsea (davorm9)
)
[1] => stdClass Object
(
[team] => Napoli (pubilegenda)
)
)
ETC...
所以我必须从中提取“团队”值并将其存储到数据库中。数据库部分不是问题,问题是提取。我尝试了几个这样的东西,但它不起作用:
$length = count($game->tour);
for ($row = 0; $row < $length; $row++) {
for ($col = 0; $col <= 2; $col++) {
echo "<p>".$game->tour[$row][$col]."</p>";
}
}
唯一有效的是:
foreach($game->tour[0][0] as $array ) {
echo $array;
foreach($game->tour[0][1] as $array2 ) {
echo $array2;
}
}
foreach($game->tour[1][0] as $array ) {
echo $array;
foreach($game->tour[1][1] as $array2 ) {
echo $array2;
}
echo '<br />';
}
那个工作正常,但它是垃圾,因为我需要能够遍历该数组并打印所有“团队”值。有什么建议?
谢谢!
答案
未经测试,但我想这应该工作
function ext($obj,$name){
$ret=array();
$rem=array();
$f=function() use(&$rem,&$ret,$name){
$v=reset($rem);
assert(NULL!==($key1=key($rem)));
unset($rem[$key1]);
foreach($v as $key2=>$value){
if($key2==$name){$ret[]=$value;}
if(is_array($value) || is_object($value))
{
$rem[]=$value;
}
}
};
$rem[]=$obj;
while(!empty($rem))
{
$f();
}
return $ret;
}
$teams=ext($arr,'team');
编辑:修改变量中的拼写错误。编辑2:警告,如果你有任何循环引用,这可能会进入无限循环... dunno,你应该测试你是否担心这一点。 edit3:修复了另一个变量名typo x.x(会破坏代码)
以上是关于PHP循环遍历多维数组并提取信息的主要内容,如果未能解决你的问题,请参考以下文章