nourhein chaieb
nourhein chaieb

Reputation: 39

how to get the value of an object inside an array?

I have this array of objects:

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

I want to get the value of id_f of each object and check if this value exist in another array ,I tried with this but it gives me the wrong result:

foreach($table as $t){

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

    }
 }

I also tried with this:

foreach($table as $t){

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

    }
 }

I can't get the right result , I will appreciate any help.

Upvotes: 0

Views: 957

Answers (4)

RiggsFolly
RiggsFolly

Reputation: 94662

You dont show a json_decode() anywhere in your code, thats the first thing to do with a JSON String, to decode it into a PHP data structure. In this case an array of objects.

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

Results

Found one 2255
No match for 5886

Upvotes: 1

arkascha
arkascha

Reputation: 42915

Another approach without foreach loop:

<?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 "-";
    }
});

The output obviously is:

+-

Upvotes: 1

Varun Malhotra
Varun Malhotra

Reputation: 1202

it can be done like this:

to define the object array you can define like below with json string approach. or to define object is like this $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

        }

}

?>

Upvotes: 0

roberto06
roberto06

Reputation: 3864

There's no need for the dollar sign before your Object property name (actually, it won't work, except of course if $id_f is a real variable which has for value 'id_f', but somehow I doubt it) :

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

Upvotes: 0

Related Questions