Php:嵌套for循环不起作用

时间:2016-07-13 20:25:01

标签: php

这将有效

$arrayOrdenado = array();
if ($rows[4][2] == $orden[0]) {
    array_push($arrayOrdenado,$rows[4]);
}

但是在循环时它不会发现任何巧合

for ($i = 0; $i < $orden.length - 1; $i++) { 
    for ($y = 0; $y < $rows.length - 1; $y++) { 
        if ($rows[y][2] == $orden[i]) {
            array_push($arrayOrdenado, $rows[y]);
            break;
        }
    }
}

我不知道为什么

2 个答案:

答案 0 :(得分:1)

您忘记了$字符:

for ($i=0; $i < count($orden)-1; $i++) { 
      for ($y=0; $y < count($rows)-1; $y++) { 
        if($rows[$y][2]==$orden[$i]){
          array_push($arrayOrdenado,$rows[$y]);
          break;
        }
      }
    }

答案 1 :(得分:-1)

使用foreach循环遍历数组。

foreach (array_slice($orden, 0, -1) as $o) {
    foreach (array_slice($rows, 0, -1) as $row) {
        if ($row[2] == $o) {
            $arrayOrdenado[] = $row;
        }
    }
}

另一种写这个的方法是:

foreach (array_slice($rows, 0, -1) as $row) {
    if (in_array($row[2], array_slice($orden, 0, -1)) {
        $arrayOrdenado[] = $row;
    }
}

我正在使用array_slice()来匹配原始length-1循环中使用for的行为,这会忽略数组的最后一个元素。我实际上将它移到一个变量,所以它不必每次都通过外部循环,但我在上面的代码中保留它以保持更短。