我现在很不爽,因为网上大家都在说PHP支持两层、三层、四层、五层或更深的多维数组。但是,对于大多数人来说,三层以上深度的数组是很难管理的。所以我找不到人帮我。
下面举一个很简单的例子
$documents = array(
array(
"name"=>"Markos",
"lastname"=>"papadopoulos",
"country"=>"Greece",
"nationality"=>"greek",
"job"=>"web developer",
"hobbies"=>array(
"sports"=>"boxing",
"others"=>array(
"freetime"=>"watching Tv"
)
)
)
);
foreach($documents as $document){
echo $document['name']."<br>"
.$document['lastname']."<br>"
.$document['country']."<br>"
.$document['nationality']."<br>"
.$document['job']."<br>";
foreach ($document['hobbies'] as $key=>$value){
echo $key." ".$value."<br>";
foreach ($value['others'] as $subkey=>$subvalue){
echo $subkey['freetime'];
}
}
}
我被卡住了,我无法显示出 "others"=>array("freetime"=>"watching tv")
谁能给我建议?如果我也有另一个数组在 "others"=>array("freetime"=>"watching tv")
,我怎么能把这个数组显示出来呢?我正在努力学习其中的逻辑。
在PHP中。foreach
实际上有两种语法。
foreach($array as $element)
这可能意味着 $element
最终成为一个数组 foreach($array as $key => $value)
这意味着 key
永远不会是一个数组,它是什么键,所以你在 =>
在您的数组中,而 $value
可以是一个数组。这是遵循第一种语法的方法,注意你甚至不必嵌套 foreach
在这里,正如 @Nathanael的评论 你的数组中的内容大多是标量,不是真正的嵌套数组。
foreach($documents as $document){
echo $document['name']."<br>".
$document['lastname']."<br>".
$document['country']."<br>".
$document['nationality']."<br>".
$document['job']."<br>".
$document['job']."<br>".
$document['hobbies']['sports']."<br>".
$document['hobbies']['others']['freetime'];
}
如果你想采用第二种语法,那么最好是做一个 递归:
function display_multi_level_array($array) {
foreach($array as $key => $value){
if(is_array($value)) {
display_multi_level_array($value);
continue;
}
echo $key." ".$value."<br>";
}
}
display_multi_level_array($documents);
试试
foreach($documents as $document){
echo $document['name']."<br>"
.$document['lastname']."<br>"
.$document['country']."<br>"
.$document['nationality']."<br>"
.$document['job']."<br>";
foreach ($document['hobbies'] as $key=>$value){
if (is_array($value)) {
foreach ($value as $subkey=>$subvalue){
echo $subvalue;
}
} else {
echo $key." ".$value."<br>";
}
}
}
foreach ($documents as $key) {
echo $key['name']. '<br>';
echo $key['lastname']. '<br>';
echo $key['country']. '<br>';
echo $key['nationality']. '<br>';
echo $key['job']. '<br>';
echo $key['hobbies']['sports']. '<br>';
echo $key['hobbies']['others']['freetime']. '<br>';
}
输出将是MarkospapadopoulosGreecekweb developerboxingwatching Tv。