Sky
Sky

Reputation: 157

how to check two array merging and if exist value to add a new key

$now = check key

$all = all data

I need check some id is in array $all

$now = array(13,15,18);

$all = 
Array(
    [0] => Array
        (
            [lid] => 4
            [name] => aaaaa
        )

    [1] => Array
        (
            [lid] => 12
            [name] => s
        )

    [2] => Array
        (
            [lid] => 13
            [name] => aaa
        )

    [3] => Array
        (
            [lid] => 14
            [name] => bbb
        )

    [4] => Array
        (
            [lid] => 15
            [name] => ccc
        )

    [5] => Array
        (
            [lid] => 16
            [name] => ddd
        )

    [6] => Array
        (
            [lid] => 17
            [name] => eee
        )

    [7] => Array
        (
            [lid] => 18
            [name] => fffff
        )

)

$now value is lid, I need use $now to check $all...

$now is 13,15,18

$all there are 8 rows lid : 4,12,13,14,15,17,18

13,15,18 is in array

so I need add a new key and value ext=1.

set to :

Array(
    [0] => Array
        (
            [lid] => 4
            [name] => aaaaa
            [ext] => 0
        )

    [1] => Array
        (
            [lid] => 12
            [name] => s
            [ext] => 0
        )

    [2] => Array
        (
            [lid] => 13
            [name] => aaa
            [ext] => 1
        )

    [3] => Array
        (
            [lid] => 14
            [name] => bbb
            [ext] => 0
        )

    [4] => Array
        (
            [lid] => 15
            [name] => ccc
            [ext] => 1
        )

    [5] => Array
        (
            [lid] => 16
            [name] => ddd
            [ext] => 0
        )

    [6] => Array
        (
            [lid] => 17
            [name] => eee
            [ext] => 0
        )

    [7] => Array
        (
            [lid] => 18
            [name] => fffff
            [ext] => 1
        )

)

Upvotes: 1

Views: 87

Answers (4)

Gorakh Yadav
Gorakh Yadav

Reputation: 302

Here is what you can try:

   <?php
           $now = array(13,15,18);

           $all = array(array('lid'=>4,'name'=>'aaaa'),array('lid'=>12,'name'=>'s'),array('lid'=>13,'name'=>'aaaa'),array('lid'=>14,'name'=>'bbb'),array('lid'=>15,'name'=>'ccc'),array('lid'=>16,'name'=>'ddd'),array('lid'=>17,'name'=>'eeee'),array('lid'=>18,'name'=>'ffff'));


           //echo"<pre>";print_r($all);
           $i = 0;
           foreach($all as $a){
             if (in_array($a['lid'], $now))
                {
                  $all[$i]['ext'] = 1;
                }
             else
                {
                  $all[$i]['ext'] = 0;
                }
             $i++;

           }
           echo"<pre>";print_r($all);


  ?>

Upvotes: 1

Karthi
Karthi

Reputation: 1

Try like this

foreach($all AS $key => $a) {

    $all1[$key] = $a;

    $all1[$key]['ext'] = 0;

    if(in_array($a['lid'], $now)) {
        $all1[$key]['ext'] = 1;
    }

}

print_r($all1);

print_r($all);

Upvotes: 0

Rakesh Lamp Stack
Rakesh Lamp Stack

Reputation: 490

You will need to do something like below:

$now = array(12,14);

$all = array(
    array(
            "lid" => 4,
            "name" => "aaaaa"
        ),

    array(
            "lid" => 12,
            "name" => "s"
        ),

    array(
            "lid" => 13,
            "name" => "aaa"
        ),

    array(
            "lid" => 14,
            "name" => "bbb"
        )
        );
$i = 0;
foreach ( $all as $each ) {
    if ( in_array($each['lid'],$now) ) {
        $all[$i]['ext'] = 1;
    } else {
        $all[$i]['ext'] = 0;
    }
    $i++;
}
print_r($all);

Upvotes: 0

cmbuckley
cmbuckley

Reputation: 42507

You should loop over your $all array as follows:

foreach ($all as &$item) {
    $item['ext'] = (in_array($item['lid'], $now) ? 1 : 0);
}

Upvotes: 1

Related Questions