2011-03-25 79 views
0

我有這樣的代碼:array_search($key, $array)。 $ key爲任意數量從1到10 $陣列看起來像這樣:使用PHP查找多維數組中元素的位置

id name 
1 foo 
2 bar 
3 lol 
4 asdf 

我只是想找到的名稱在數組中的位置。所以如果我有「富」,我會得到0,如果我有「大聲笑」,我會有2。

+0

你想通過鍵搜索和返回鍵? – MitMaro 2011-03-25 03:57:23

+0

你可以重新解釋這個問題嗎?我不明白。 – erisco 2011-03-25 04:19:31

+0

那麼你的代碼有什麼問題? array_search($ key,$ array)應該沒問題。 – erisco 2011-03-25 04:47:33

回答

-1
<?php 
    $array = array("1"=>"foo","2"=>"bar","3"=>"lol","4"=>"asdf"); 

    $value="foo"; 

    $key = array_search($value, $array); 

    $pos =array_search($key, array_keys($array)); 

    echo "element pos is: ". ($pos); 

?>   
+0

第一個'array_search'不會返回正確的值,因爲它會查找數組中鍵的值,該值不會作爲值存在。 – MitMaro 2011-03-25 03:59:52

+0

如果元素不退出,它將返回0.您可以舉一些更多的例子。 – 2011-03-25 04:05:19

+1

該問題要求找到密鑰的位置,而不是值的位置。即。 '$ key = 2' – MitMaro 2011-03-25 04:07:20

1
$id = 2 
foreach ($array as $value) { 
    if ($value['id'] == $id) { 
     echo $value['name']; 
     break; 
    } 
} 
0
$i = array_search($foo, array_values($array)); 

犯錯,我想我誤以爲你在你輸入數組是什麼意思。

這可能是你想要什麼:

function find_position($key, array $array, $col) 
{ 
    $i = 0; 
    foreach ($array as $item) /* or as $i => $item, not sure what you want */ 
    { 
    if ($item[$col] == $key) return $i; 
    ++$i; 
    } 
    return NULL; 
} 

$i = find_position('foo', $array, 'name'); 

關於在上面的代碼中的註釋......很明顯,如果你使用它,那麼你不需要$i = 0$++i

0

您需要使用array_values將您的數組重新索引爲零索引。

$index = array_search($foo, array_values($array)); 

這將返回:

echo array_search('foo', array_values($array)); // 0 
echo array_search('bar', array_values($array)); // 1 
echo array_search('lol', array_values($array)); // 2 
echo array_search('asdf', array_values($array)); // 3