Sanu Saji
Sanu Saji

Reputation: 137

array search for a key=>value

I have an array,

$arr=(
    [0] => Array
        (
            [groupid] => 1
            [groupname] => Red
            [members] => Array
                (
                    [0] => Array
                        (
                            [mid] => 9
                            [name] => Anith
                        )

                    [1] => Array
                        (
                            [mid] => 11
                            [name] => Aravind
                        )

                    [2] => Array
                        (
                            [mid] => 10
                            [name] => Lekshmi
                        )



                )

        )

    [1] => Array
        (
            [groupid] => 2
            [groupname] => Blue
            [members] => Array
                (
                    [0] => Array
                        (
                            [mid] => 6
                            [name] => Yamuna
                        )

                    [1] => Array
                        (
                            [mid] => 2
                            [name] => Kamala K
                        )

                    [2] => Array
                        (
                            [mid] => 13
                            [name] => Sooraj K
                        )



                )

        )

I want to check [mid] => 2 is in the array..If it exists I want to delete it(ie. unset the array )-----

[1] => Array
                        (
                            [mid] => 2
                            [name] => Kamala K
                        )
;;;

eg:--unset($arr[1]['members'][2];

Upvotes: 0

Views: 83

Answers (1)

maček
maček

Reputation: 77778

This should do the trick

foreach ($arr as $group => $subarray) {
    foreach ($subarray['members'] as $k => $v) {
        if ($v['mid'] == 2) {
            unset($arr[$group]['members'][$k]);
            break;
        }
    }
}

var_dump($arr);

If you feel like getting crafty, you could do something like this:

// note: requires PHP >= 5.3
foreach ($arr as $key => &$value) {
    $value['members'] = array_filter(
        $value['members'],
        function($member) {
           return $member['mid'] != 2;
        }
    );
}

var_dump($arr);

Upvotes: 4

Related Questions