2017-03-24 6 views
0

Ich habe dieses Array von Objekten:Wie erhalte ich den Wert eines Objekts in einem Array?

$table=[{"count":"2","id_f":"2255"},{"count":"6","id_f":"5886"}]; 

Ich möchte den Wert von id_f jedes Objekt erhalten und prüfen, ob dieser Wert in einem anderen Array vorhanden sind, habe ich versucht, mit diesem aber es gibt mir das falsche Ergebnis:

foreach($table as $t){ 

    if (in_array($t[$id_f],$array){ 
    //dosomething} 
    }else{ 
    //do something else 

    } 
} 

ich auch mit diesem versucht:

foreach($table as $t){ 

    if (in_array($t->$id_f,$array){ 
    //dosomething} 
    }else{ 
    //do something else 

    } 
} 

ich kann das richtige Ergebnis nicht bekommen, ich werde jede Hilfe dankbar.

+0

'array = json_decode ($ table true)' –

+0

funktioniert '$ t-> id_f' für dich? – Butuzov

+0

@OlegButuzov Ja, ich habe es versucht, aber es gibt mir das 'Versuch, die Eigenschaft von Nicht-Objekt zu bekommen' –

Antwort

0

Es gibt keine Notwendigkeit für die Dollar-Zeichen vor Ihrem Objekt Eigenschaftsnamen (tatsächlich, es wird nicht funktionieren, es sei denn natürlich, wenn $id_f eine reelle Variable ist, die für Wert hat 'id_f', aber irgendwie ich bezweifle es):

foreach ($table as $t) { 
    if (in_array($t->id_f, $array){ 
    // do something 
    } else { 
    // do something else 
    } 
} 
0

es kann wie folgt geschehen:

das Objekt Array definieren Sie wie unten mit jSON-String Ansatz definieren können. oder ein Objekt zu definieren, ist wie dies $table = new stdClass();

<?php 
$table='[{"count":"2","id_f":"2255"},{"count":"6","id_f":"5886"}]'; 

$obj = json_decode($table); 

$array=array("2555","2255"); 
foreach($obj as $t){ 

     if (in_array($t->id_f,$array)){ 

     //dosomething 

     }else{ 

     //do something else 

     } 

} 

?> 
+0

sicher gib mir moment. –

+0

Auch diese Zeile '$ obj = json_decode ($ table);' erstellt ein Array von Objekten und nicht wie Ihre Variablen Namen ein Objekt vorschlagen – RiggsFolly

1

Sie zeigen nicht ein json_decode() überall in Ihrem Code, das ist das erste, was mit einem JSON String zu tun, es in eine PHP-Datenstruktur zu entschlüsseln. In diesem Fall ein Array von Objekten.

$other_array = array('2255', '9999'); 

$table='[{"count":"2","id_f":"2255"},{"count":"6","id_f":"5886"}]'; 
$array = json_decode($table); 

foreach ($array as $obj) { 
    if (in_array($obj->id_f, $other_array)) { 
     echo 'Found one ' . $obj->id_f . PHP_EOL; 
    } else { 
     echo 'No match for ' . $obj->id_f . PHP_EOL; 
    } 
} 

Ergebnisse

Found one 2255 
No match for 5886 
+0

Danke für die Antwort, nur ein Hinweis, das andere Array ist ein Array von Objekten auch, tut das etwas ändern ? –

1

Ein weiterer Ansatz ohne foreach-Schleife:

<?php 
$table=json_decode('[{"count":"2","id_f":"2255"},{"count":"6","id_f":"5886"}]'); 
$data = [10, 20, 2255]; 
array_walk($table, function($obj) use (&$data) { 
    if (in_array($obj->id_f, $data)) { 
     echo "+"; 
    } else { 
     echo "-"; 
    } 
}); 

Der Ausgang offensichtlich ist:

+ -

+1

@RiggsFolly Sicher, behoben. – arkascha

Verwandte Themen