Php:嵌套for循环不工作

Php:嵌套for循环不工作,php,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]

这会奏效的

$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;
        }
    }
}
for($i=0;$i<$orden.length-1;$i++){
对于($y=0;$y<$rows.length-1;$y++){
if($rows[y][2]=$orden[i]){
array_push($arrayOrdenado,$rows[y]);
打破
}
}
}

我不知道你为什么忘记了
$
字符:

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;
        }
      }
    }
for($i=0;$i
您忘记了
$
字符:

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;
        }
      }
    }
for($i=0;$i
使用
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\u slice()
来匹配在原始
for
循环中使用
length-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\u slice()
来匹配在原始
for
循环中使用
length-1
的行为,这忽略了数组的最后一个元素。实际上,我会把它移到一个变量中,这样它就不必每次都通过外部循环执行,但我在上面的代码中就这样做了,以使它更短。

$rows.length-1
/
$orden.length
是一个javascript东西
count($rows)
/
count($orden)
是php。在php中,
用于浓缩,如
“a”。“b”
“ab”
相同。您的代码可能会抛出错误,如
未定义常量、假定长度
。请详细说明您的问题。你想做什么?我有一个数组($orden),它按顺序包含ID。我想订购第二个数组($rows),它包含数组,ID是[2]值,$rows[y][2]具有静态[2]。打开
错误报告(E\u ALL)
,您应该会收到警告。为什么要从
长度中减去1?这将忽略每个数组中的最后一个元素。这是故意的吗?
$rows.length-1
/
$orden.length
是javascript的东西
count($rows)
/
count($orden)
是php。在php中,
用于浓缩,如
“a”。“b”
“ab”
相同。您的代码可能会抛出错误,如
未定义常量、假定长度
。请详细说明您的问题。你想做什么?我有一个数组($orden),它按顺序包含ID。我想订购第二个数组($rows),它包含数组,ID是[2]值,$rows[y][2]具有静态[2]。打开
错误报告(E\u ALL)
,您应该会收到警告。为什么要从
长度中减去1?这将忽略每个数组中的最后一个元素。这是故意的吗?谢谢!我最近写的javascript太多了。。这加上Jonathan的回答也解决了我的问题,我如何在foreach循环中实现$I和$y这样的计数器?很高兴看到它有所帮助,使用多种语言有时会让人困惑,而不是$orden。长度应该使用count($orden),所以
$ordenkey
将是新的
$I
谢谢!我最近写的javascript太多了。。这加上Jonathan的回答也解决了我的问题,我如何在foreach循环中实现像$I和$y这样的计数器?很高兴看到它有所帮助,使用多种语言有时会让人困惑,而不是$orden。长度应该使用count($orden),所以
$ordenkey
将是新的
$I