2014-07-15 120 views
3

我掙扎解釋什麼,我想在這裏做這樣的道歉,如果我迷惑你的鍵/位置.. 我只是爲我自己感到困惑檢查關聯數組中包含的值,並檢索陣列

我有一個數組,像這樣:

$foo = array(
    array('value' => 5680, 'text' => 'Red'), 
    array('value' => 7899, 'text' => 'Green'), 
    array('value' => 9968, 'text' => 'Blue'), 
    array('value' => 4038, 'text' => 'Yellow'), 
) 

我要檢查,如果數組包含的值,例如7899,並在上面的示例中獲取鏈接到該值「綠色」的文本。

+2

foreach()怎麼樣? ... – Phantom

+0

7899未鏈接到'黃色'。而你到底需要做什麼? –

+0

@rack_nilesh道歉爲那個rack_nilesh ..解決了這個問題。 –

回答

6

嘗試這樣的事情

$foo = array(
    array('value' => 5680, 'text' => 'Red'), 
    array('value' => 7899, 'text' => 'Green'), 
    array('value' => 9968, 'text' => 'Blue'), 
    array('value' => 4038, 'text' => 'Yellow'), 
); 

$found = current(array_filter($foo, function($item) { 
    return isset($item['value']) && 7899 == $item['value']; 
})); 

print_r($found); 

,輸出

Array 
(
    [value] => 7899 
    [text] => Green 
) 

這裏的關鍵是array_filter。如果搜索值7899不是靜態的,那麼您可以使用類似於function($item) use($searchValue)的東西將它帶入封閉。需要注意的是array_filter將返回元素的數組這就是爲什麼我將其穿過current

0

你想什麼在這裏以一個猜測:

function findTextByValueInArray($fooArray, $searchValue){ 
    foreach ($fooArray as $bar) 
    { 
     if ($bar['value'] == $searchValue) { 
      return $bar['text']; 
     } 
    } 
} 
2

對於PHP> = 5.5.0它與array_column容易:

echo array_column($foo, 'text', 'value')[7899]; 

或者不必每次都用array_column可重複:

$bar = array_column($foo, 'text', 'value'); 
echo isset($bar[7899]) ? $bar[7899] : '';