2013-06-03 61 views
-2

例子:如何獲得給定密鑰的多維數組值?

$animal = ("bird" => "crow", "cat" => "lion", "snake" => "cobra"); 

我想獲得它的鍵是

function_name_get_value(["monkey","goat","bird"]); 

我試着用array_key_exists()但問題是,因爲它被指定我不能通過$animal變量什麼論據是所有值傳遞函數function_name_get_value

+1

首先,這不是一個多維數組。其次是這一行的語法:'unction_name_get_value([「monkey」,「goat」,「bird」]);'不正確。你可以做'$ animal ['monkey']'來獲得值。你試圖做什麼? – botenvouwer

+0

多維數組是一個數組,如:array('a'=> array('b')),你的$動物數組是一個平坦的數組。正如sirwilliam提到的,你可以以$ animal ['monkey']的形式訪問數組元素。如果你需要一個函數來返回給定鍵的值,那麼你需要使用$ _GLOBAL數組,這是一個不好的習慣。 – WASD42

+0

@sirwilliam:該數組的sytax不正確,但方括號自PHP 5.4起罰款。 – Ryan

回答

1

很簡單,你只需要傳遞2個參數,一個是鍵的名稱,另一個是數組。

function getValue($arr, $key) 
{ 
    return isset($arr[$key]) && is_array($arr) ? $arr[$key] : false; 
} 
,如果你想獲得更多的鑰匙只要使用循環

function getValue($arr, $keyArr) 
{ 
    if(!is_array($arr) || !is_array($keyArr)) return false; 

    $found = array(); 
    foreach($keyArray as $key) 
    if(array_key_exists($key, $arr)) $found[$key] = $arr[$key]; 
    return $found; 
} 

array_key_exists需要兩個參數一個是keyname,另一個是數組。我沒有看到任何其他選項來找到陣列中的一個鍵。您必須至少通過2個參數

+0

該問題指定唯一的參數是[「猴」,「山羊」,「鳥」]。 – user2429302

+1

我不想寫它,但爲您的解決方案是使用** $ _ GLOBALS **關鍵字; /你確定你不能通過我建議的方式的另一個參數?這個函數的主體是什麼,你爲什麼需要使用它? http://www.php.net/manual/en/reserved.variables.globals.php – Robert