2016-07-13 17 views
1

Arbeits Dies funktioniertPhp: Verschachtelte for-Schleife nicht

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

Aber während Looping es wird kein Zufall finden

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; 
     } 
    } 
} 

Ich weiß nicht, warum

+6

'$ rows.length-1' /' $ orden.length' ist eine JavaScript-Sache. 'count ($ rows)'/'count ($ orden)' ist php. In php wird das '.' für die Konkatentation wie" a "verwendet." B "' ist dasselbe wie "" ab "'. Ihr Code würde wahrscheinlich Fehler wie "undefinierte Konstante, angenommene Länge" werfen. –

+0

Bitte erläutern Sie Ihre Frage. Was möchtest du tun? – tovishalck

+0

Ich habe ein Array ($ orden), das die IDs der Reihe nach enthält. Ich möchte das zweite Array ($ rows) bestellen, das Arrays enthält und die ID ist der Wert [2], der die $ rows [y] [2] ist, hat eine statische [2]. –

Antwort

-1

Verwenden Sie foreach, um Arrays zu durchlaufen.

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

Ein anderer Weg, dies zu schreiben ist:

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

ich array_slice() bin mit der Verwendung von length-1 in Ihren ursprünglichen for Schleifen um das Verhalten zu entsprechen, das das letzte Element der Arrays ignoriert. Ich würde das eigentlich in eine Variable verschieben, damit es nicht jedes Mal durch die äußere Schleife geht, aber ich habe es so im obigen Code gelassen, um es kürzer zu halten.

1

Sie das vergessen haben, $ Zeichen:

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; 
     } 
     } 
    } 
+0

Danke! Ich habe in letzter Zeit zu viel Javascript gemacht. Dieses plus Jonathans Antwort löste mein Problem –

+0

Könnten Sie bitte meine Antwort annehmen? –

+0

Wie würde ich auch einen Zähler wie $ i und $ y in einer foreach-Schleife implementieren? –

Verwandte Themen