2013-06-03 62 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