PHP获取多维数组的值并进行比较

时间:2014-06-13 17:49:14

标签: php arrays multidimensional-array foreach

我有这个数组$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中跳过它。

注意:子名称和名称只是示例,每个名称和名称都不相同。

3 个答案:

答案 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>';