2013-03-19 65 views
0
$arr = array (

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

假設我們知道的是內部數組的'id',那麼搜索$ arr元素的最佳方式是什麼?它包含一個包含我們的id的數組?php兩層陣列鍵搜索

回答

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... 
     } 
    } 
} 
+0

和'返回false;'如果沒有找到 – Waygood 2013-03-19 16:06:42

+0

酵母或返回null – Populus 2013-03-19 16:26:44

+0

是啊,但我需要該元素的關鍵字,例如id = 4會返回1和i d = 1返回0 – Benedictus 2013-03-19 18:20:38

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"]; 
0

使用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>'; 
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);