在json文件中搜索数组

I have an array which has a key with multiple content. I want to get that array which includes the key that I search .

$arr = json_decode('{"people":[
{
  "id": "8080",
  "content": "foo",
  "member": [123, 456],
  "interval": 7
},
{ 
  "id": "8097",
  "content": "bar",
  "member": [1234, 4567],
  "interval": 7
}


]}', true);


$results = array_filter($arr['people'], function($people) {
    return $people['id'] == 8080;
});

echo json_encode($results);

This will return:

{"id":"8080","content":"foo","member":[123,456],"interval":7}

I want that:

$results = array_filter($arr['people'], function($people) {
    return $people['member'] == 123;
});

And this does not work.

Have somebody an idea?

As @JonStirling said in comment. Use in_array() function.

$arr = json_decode('{"people":[
{
  "id": "8080",
  "content": "foo",
  "member": [123, 456],
  "interval": 7
},
{ 
  "id": "8097",
  "content": "bar",
  "member": [1234, 4567],
  "interval": 7
}


]}', true);

$searchId = 123;
$results = array_filter($arr['people'], function($people) use ($searchId) {
    return in_array($searchId, $people['member']);
});

echo json_encode($results);

Result:

[{"id":"8080","content":"foo","member":[123,456],"interval":7}]

See if this helps:

$arr = json_decode('{"people":[
{
  "id": "8080",
  "content": "foo",
  "member": [123, 456],
  "interval": 7
},
{ 
  "id": "8097",
  "content": "bar",
  "member": [1234, 4567],
  "interval": 7
}


]}', true);

$results = array_filter($arr['people'], function($people) {
    for($i=0; $i<count($people['member']); $i++){
        return $people['member'][$i] == 123; 
    }
});

echo json_encode($results);

The out come will be:

[{"id":"8080","content":"foo","member":[123,456],"interval":7}]

If you want to do it withouth 'array_filter' you can try this:

function search($arr, $id, $arrayValue)
{
    $people = null;
    foreach ($arr['people'] as $a)
    {
        if ($a['id'] == $id)
        {
            $people = $a;
        }
    }

    $arrayWeAreLookingFor = null;
    foreach ($people as $property => $value)
    {
        if (is_array($value))
        {
            foreach ($value as $v)
            {
                if ($v == $arrayValue)
                {
                    $arrayWeAreLookingFor = $people[$property];
                }
            }
        }
    }

    return $arrayWeAreLookingFor;
}

var_dump(search($arr, 8080, 123));