0
$arr = array (

    0 => array(
        'id' => 1,
        'name' => 'john'
    ),
    1 => array(
        'id' => 4,
        'name' => 'elisabeth'
    )
);

Let's say all we know is the 'id' of the inner array, what would be the best way to search for $arr element, that contains an array, that contains our id?

Ben
  • 3,989
  • 9
  • 48
  • 84

4 Answers4

1
function search($id)
{
    foreach ($arr as $item) {
        if (isset($item['id']) && $item['id'] == $id) {
            return $item; // or whatever you want to return
        }
    }
}

UPDATE:

function search($id)
{
    foreach ($arr as $key => $item) {
        if (isset($item['id']) && $item['id'] == $id) {
            return $key; // Return key...
        }
    }
}
Populus
  • 7,470
  • 3
  • 38
  • 54
0
$arr = array (

0 => array(
    'id' => 1,
    'name' => 'john'
),
1 => array(
    'id' => 4,
    'name' => 'elisabeth'
)
);
foreach($arr as $a)
if($a["id"] == 4)
echo $a["name"];
Suyash
  • 625
  • 1
  • 5
  • 22
0

Using array_filter

$arr = array (

    0 => array(
        'id' => 1,
        'name' => 'john'
    ),
    1 => array(
        'id' => 4,
        'name' => 'elisabeth'
    )
);

$id = 1;
$result = array_filter($arr, function($el) use ($id) {
    return $el['id'] == $id;
});
echo '<pre>', var_dump($result), '</pre>';
Crisp
  • 11,417
  • 3
  • 38
  • 41
0
$array = array(
    0 => array(
        'id' => 1,
        'name' => 'john'
    ),
    1 => array(
        'id' => 4,
        'name' => 'elisabeth'
    )
);

$search = 4;
$result = null;

array_walk(
    $array,
    function ($element) use ($search, &$result) {
        if (isset($element['id']) && (int)$element['id'] === (int)$search) {
            $result = $element;
        }
    }
);

var_dump($result);
mkjasinski
  • 3,115
  • 2
  • 22
  • 21