2012-01-12 53 views
2

例如,我有一個數組:發現價值

array(
    array(
     ['make']=>ford 
     ['color']=>blue 
     ['type']=>automatic 
    ), 
    array(
     ['make']=>chevrolet 
     ['color']=>red 
     ['type']=>manual 
) 

是有可能在PHP中發現,當所有已知鍵的值我必須繼續是另一個關鍵的價值?

舉個例子,我的值是「blue」,我知道它在「color」鍵中,現在我能從這個信息中找到「car」的值嗎?

已知密鑰的已知值是唯一的。 (在這個例子中,不可能有兩個「藍色」值)

我希望這是有道理的,並且預先感謝您的幫助。

回答

3
$knownColor = 'blue'; 
$knownKey = 'color'; 
$desiredKey = 'make'; 

foreach ($outerArray as $inner) { 
    if ($inner[$knownKey] == $knownColor) { 
    $result = $inner[$desiredKey]; 
    // or to get the whole inner array: 
    // $result = $inner; 
    break; 
    } 
} 

var_dump($result); 
1

假設你的數組分配給$cars它會去是這樣的:

$knownColor = 'blue'; 
$knownKey = 'color'; 
... 
foreach ($cars as $car) { 
    if ($car[$knownKey] === $knownColor) { 
     return $car; 
    } 
} 
+0

謝謝!如果陣列要多層次而不是這裏顯示的一個層次..?讓我們說一個「未知」的深度水平..? – PaulSkinner 2012-01-12 14:28:53

+1

您將不得不遍歷數組,但不知道數組的結構很難提供示例。 – JaredMcAteer 2012-01-12 14:34:37