2010-05-17 56 views
0

有什麼辦法我可以搜索一個數組的值,並返回它的鍵,我試圖array_search()沒有成功......下面是我的數組的一個例子搜索陣列,array_search()問題

[0] => Array 
    (
     [value] => 
     [text] => All Call Types 
    ) 

[1] => Array 
    (
     [value] => enquiry 
     [text] => Renovation Enquiry 
    ) 

[2] => Array 
    (
     [value] => msg 
     [text] => Message to Pass on 
    ) ... 

我的最終目標是

value轉換爲text

這裏是我的嘗試:

$key = array_search($row['call_type'], $type_list); 
$call_type_name = $type_list[$key]['text']; 

謝謝!

+0

你是什麼意思將「價值轉換爲文本」? – Artefacto 2010-05-17 16:01:26

+1

下面是我的解釋:*我想搜索「value」的實例並返回「text」。* – JYelton 2010-05-17 16:12:18

+0

在你的數組結構中,'value'不是'text'的關鍵字。它們是獨立的元素。 – webbiedave 2010-05-17 16:12:31

回答

1

這是你所追求的?找到具體價值的發生位置?

function findKeyByField($arr, $name, $val){ 
$pos = 0; 
foreach ($arr as $subArr): 

    foreach ($subArr as $key => $value): 
     if($key == $name and $value == $val){ 
      return $pos; 
     } 
    endforeach; 

$pos++; 
endforeach; 
} 
+1

每當我看到語法時,都會震動:p – Artefacto 2010-05-17 16:20:11

+0

嵌套的foreach是什麼語法?有什麼更好的方法,請,我每天學習新的東西,會更好。 – 2010-05-17 16:34:50

+0

你搖滾,儘管搖到它我的公開課:) – Mikey1980 2010-05-17 17:39:16

3

你可以寫一個簡短的功能,可提供這樣的:

function findInArray($array, $needle) 
{ 
    for ($i = 0; $i < sizeof($array); $i++) 
    { 
     if ($array[$i]['value'] == $needle) return $array[$i]['text']; 
    } 
} 

用例:

$call_type_name = findInArray($type_list, 'msg'); 
+0

顯然這個函數可能更好地命名爲'getCallTypeName'或者你喜歡的東西。 – JYelton 2010-05-17 16:15:51

+0

哇,我很驚訝的search_array()函數不這樣做..我很新的PHP - 那麼它是什麼目的呢?順便說一句,午餐後我會嘗試你的解決方案。 ;) – Mikey1980 2010-05-17 16:38:34

+2

從手冊頁(http://php.net/manual/en/function.array-search.php)'array_search()'在數組中搜索一個給定的值,如果成功則返回相應的鍵。在你的例子中,你有一個數組數組(多維數組)。 'array_search()'只檢查第一維,並沒有找到匹配'$ row ['call_type']'的元素 - 而是找到數組。如果你的數組的構造方式不同,作爲一個以字符串作爲調用類型的關聯數組,以及用於'值'的鍵本身,你可以返回'$ type_list [$ key]'而不需要搜索。 – JYelton 2010-05-17 16:53:15