PHP - 按字符串的名称查找数组

时间:2014-08-26 08:08:07

标签: php arrays string

我有一些像这样的阵列 $something = array('foo' => 'bar');

现在我如何获得$something的内容?我想使用这个方法从数组中检索值,但是无法找到如何找到一个只用它的名字作为字符串给出的数组。

getArrayData($array,$key){
    // $array == 'something';
    // $key == 'foo';
    // this should return 'bar'
}

编辑:

我可能过多地抽象了这个,所以这里是完整的代码:

class Config {
public static $site = array(
    'ssl' => 'true',
    'charset' => 'utf-8',
    // ...
);

public static $menu = array(
    'home' => '/home',
    '/hub' => '/hub',
    // ...
);

public static function get($from, $key){
    return self::$from[$key];
    }

public static function __callStatic($method, $key){
    return self::get($method,$key);
    }
}

最后,使用Config::site('charset')返回'utf-8'

,可以在整个应用内访问配置

3 个答案:

答案 0 :(得分:1)

您可以使用Variable-Variables

<?php
$something = array('foo' => 'bar');
$key="foo";
$arrayName="something";

echo getArrayData($$arrayName,$key);   // Notice the use of $$

function getArrayData($array,$key){
  return isset($array[$key])? $array[$key] : NULL ;
}

<强> Fiddle

答案 1 :(得分:0)

您应该将数组本身作为参数而不是名称传递。然后你可以通过给定的键返回值:

function getArrayData($array,$key){
    return $array[$key];
}

答案 2 :(得分:0)

$array == 'something'并不重要,如果密钥存在,您可以轻松检查数组键并返回值:

function getArrayData($array,$key){
  if(isset($array[$key])) return $array[$key];
  else return "";
}