我有这个数组$pages
,它会吐出这些数据:
Array (
[Name] => Array (
[Subname] => Array (
[0] => 43.2057, -79.9632, 1, -70,-150
[1] => 140240757658.jpg
[2] => 5
[3] => 0
) )
[Name2] => Array (
[Subname2] => Array (
[0] => 43.1769, -79.4703, 5, -70,-150
[1] => 140267498933.png
[2] => 16
[3] => 0
) )
)
我有这个foreach设置:
foreach($pages as $row => $value) {
echo '<li>'.$row.'<ul>';
foreach($value as $x => $y) {
echo
'<li>
<a href="page.php?" action='.str_replace(" ", "", strtolower($y[2])).'" title="'.$x.'">'.$x.'</a>
</li></ul></li>';
}
}
我想要做的是,如果每个子名称中的[3]等于0,则从我的foreach中跳过它。
注意:子名称和名称只是示例,每个名称和名称都不相同。
答案 0 :(得分:1)
这应该有效:
foreach ($pages as $page) {
foreach($page as $subname) {
if ($subname[3] != 0) {
/* Do whatever you want with the data of this subname */
}
}
}
如果您想使用密钥名称,可以这样:
foreach ($pages as $pageKey => $page) {
foreach($page as $subnameKey => $subname) {
if ($subname[3] != 0) {
/* Do whatever you want with the data of this subname */
}
}
}
答案 1 :(得分:0)
如果你想跳过sub-foreach,那么这就是解决方案
foreach($pages as $row => $value) {
if($value['Subname'][3] == 0)
continue;
echo '<li>' . $row . '<ul>';
foreach($value as $x => $y) {
echo '<li><a href="page.php?action=' . str_replace(" ", "", strtolower($y[2])) . '" title="' . $x . '">' . $x . '</a></li></ul></li>';
}
}
答案 2 :(得分:0)
由于这是一个关联数组,您将无法检查
$pages['foo']['bar'][0] === 0
之前第一个foreach
开始,因为我们之前不知道 $pages['foo']
的值。当我们进行检查时,你已经在以下形式输出了html:
echo '<li>' . $row . '<ul>';