[英]How can I loop over this multi dimensional array?
So Im trying to loop over an array of categories
and sub-categories
but Im having trouble with the foreach loop
. 所以我试图遍历一系列categories
和sub-categories
但是我遇到了foreach loop
麻烦。 Once I've got the array working Im going to create a menu where if you hover over a category, sub categories appear. 一旦数组工作完毕,我将创建一个菜单,如果您将鼠标悬停在某个类别上,则会显示子类别。
Put it this way, Im hopeless at the logic side of things :| 这么说吧,我在逻辑上没有希望:| This is my array along with the loops I've tried: 这是我的数组以及尝试过的循环:
$categories = array(
'arr' => array(
'cat'=>'sport',
'subcats'=> array(
"surfing", "basketball", "nfl", "afl"
)
),
'arr' => array(
'cat'=>'Automotive',
'subcats'=> array(
"cars", "f1", "bikes", "etc"
)
),
'arr' => array(
'cat'=>'comedy',
'subcats'=> array(
"stand up", "pranks", "...", "test"
)
)
);
//Loop1
foreach ($categories as $key => $value) {
if($key == "arr"){
foreach ($key as $key => $value) {
echo $value;
if($key == "cat"){
echo "cat";
}
else{
echo $value;
}
}
// echo $key . "<br />";
// if($key == 'subcats'){
// echo "________".$key."<br />";
// }
}
}
//Attempt number 2
foreach ($categories as $key => $value) {
if($key == "arr"){
while($key){
echo $value;
if($key == "cat"){
echo $value;
}
if($key == "subcats"){
while($key){
echo $value[$key];
}
}
}
}
}
This works okay but only problem is that it will only loop through the last arr=>array()
and not any of the ones before. 这样做可以,但是唯一的问题是它只会循环访问最后一个arr=>array()
而不会循环遍历任何一个。
$i=0;
foreach ($categories as $key => $value) {
if($key == "arr"){
foreach ($categories['arr'] as $sub => $val) {
if($sub == "cat"){
echo $val . " => ";
}
else if($sub == "subcats"){
for($i=0; $i<4; $i++){
echo $val[$i] . ", ";
}
}
}
}
}
If you can reorganize your array, you can stick the categories as keys, subcategories as values: 如果可以重组数组,则可以将类别作为键,将子类别作为值:
$categories = array(
'sport' => array(
"surfing", "basketball", "nfl", "afl"
),
'Automotive' => array(
"cars", "f1", "bikes", "etc"
),
'comedy' => array(
"stand up", "pranks", "...", "test"
)
);
// Here is an imploded list, you don't need a second loop then
foreach($categories as $cat => $subcat) {
echo "<h1>".$cat."</h1>";
echo '<ul>';
echo '<li>'.implode('</li>'.PHP_EOL.'<li>',$subcat).'</li>';
echo '</ul>';
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.