2016-11-09 3 views
1

Ich denke, ich bin zu alt oder ich bin nur dumm, aber ich kann nicht verstehen, warum ich nicht auf einem einfachen Array Schleife.Ich ziehe meine Haare mit grundlegenden Fehler

Ich habe diesen Code:

$results = []; 
for ($i = 0; $i < count($links); $i++) { 
    $results[] = [ 
     'site' => $links[$i], 
     'pda' => $data[$i]->pda 
    ]; 
} 

Das Array $ Links enthält eine Liste von URLs und $ data enthält eine Liste von Werten wie folgt aus:

array(3) { 
    0 => object(stdClass) 
    { 
     "pda" => int 100 
    } 
    1 => object(stdClass) 
    { 
     "pda" => int 100 
    } 
    2 => object(stdClass) 
    { 
     "pda" => int 1 
    } 
} 

EDIT: Dies ist die print_r ($ data) content ... es scheint, dass einige von Ihnen den Dump von oben nicht verstehen und die print_r-Lösung bevorzugen: - |

Array 
(
    [0] => stdClass Object 
     (
      [pda] => 100 
     ) 

    [1] => stdClass Object 
     (
      [pda] => 1 
     ) 

    [2] => stdClass Object 
     (
      [pda] => 100 
     ) 

) 

Wenn ich $ Daten tun [$ i] -> pda in der Schleife i erhalten Fehler "Kann nicht Objekt des Typs stdClass als Array verwenden".

Wenn ich versuche, es als ein Objekt zuzugreifen, erhalte ich den Fehler "Versuch, die Eigenschaft von Nicht-Objekt zu bekommen".

Fazit, bin ich dumm oder ich werde verrückt ?!

Vielen Dank!

+0

Können Sie 'print_r ($ data)' versuchen und die Ausgabe veröffentlichen? –

+0

'Array ([0] => stdClass Objekt ([pda] => 1) [1] => stdClass Objekt ([pda] => 100) [2] => stdClass Objekt ([pda] => 100)) ' –

+0

Können Sie uns zeigen, welche Ausgabe Sie erreichen möchten? –

Antwort

0

Ein wenig erweiterte Antwort Kommentare:

Sie haben wahrscheinlich eine andere Anzahl von $links als $data. Debuggen Sie mit einem einfachen if else Zustand, bevor Sie auf $data[$i] zugreifen und das tatsächliche Ergebnis ausgeben, wenn es fehlschlägt.

for ($i = 0; $i < count($links); $i++) { 
    if (isset($data[$i])) { 
     $results[] = [ 
     'site' => $links[$i], 
     'pda' => $data[$i]->pda 
    ]; 
    } else { 
    // Somethings wrong 
    var_dump($i); 
    var_dump($links); 
    var_dump($data); 
    } 

} 

Wenn Ihre Funktion also mehrmals aufgerufen wird, werden die tatsächlichen Daten beim Auftreten des Fehlers gedumpt.

-1

Nach Ihrer Struktur:

Array 
(
    [0] => stdClass Object 
     (
      [pda] => 100 
     ) 

    [1] => stdClass Object 
     (
      [pda] => 1 
     ) 

    [2] => stdClass Object 
     (
      [pda] => 100 
     ) 

) 

Und Ihre Berufung Struktur:

$data[$i]->pda 

Hier können Sie falsch nennen, i $ nicht Array sein ein stdClass Objektarray, versuchen, diese:

Durch diese $ Daten beobachten in Ihre stdclass Objekt-Array und dann ruft "pda" als Array für t Hut.

+0

PDA ist ein Objekt nicht Array, so der erste Aufruf ist der richtige $ Daten [$ i] -> PDA nicht $ Daten -> $ i ['PDA] –

+0

Können Sie bitte versuchen, meine Syntax und überprüfen Sie erhalten Fehler. – Anshul

+0

Es ist absurd ... grundlegende Schleife Iteration. Ihr Beispiel ist falsch. –

Verwandte Themen