加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > PHP > 正文

php – 通过一系列键在多维数组中深入获取值

发布时间:2020-05-25 09:02:27 所属栏目:PHP 来源:互联网
导读:如果是数组$array 和键序列$keys = array(‘key1′,’key2′,’key3’) 如果获得$array [$keys [1]] [$keys [2]] [$keys [3]],如果键的数量不确定,可能有4个键,或1个键等等? 我的代码目前是: switch(count($keys)) { case 1: if(array_isset($array[$k

如果是数组$array

和键序列$keys = array(‘key1′,’key2′,’key3’)

如果获得$array [$keys [1]] [$keys [2]] [$keys [3]],如果键的数量不确定,可能有4个键,或1个键等等?

我的代码目前是:

switch(count($keys)) {
    case 1:
        if(array_isset($array[$keys[0]]),$array)
            $value = $array[$keys[0]];
        break;
    case 2:
        if(array_isset($array[$keys[0]][$keys[1]]),$array[$keys[0]])
            $value = $array[$keys[0]][$keys[1]];
        break;
    case 3:
        if(array_isset($array[$keys[0]][$keys[1]][$keys[2]]),$array[$keys[0]][$keys[1]])
            $value = $array[$keys[0]][$keys[1]][$keys[2]];
        break;
    case 4:
        if(array_isset($array[$keys[0]][$keys[1]][$keys[2]][$keys[3]]),$array[$keys[0]][$keys[1]][$keys[2]])
            $value = $array[$keys[0]][$keys[1]][$keys[2]][$keys[3]];
        break;
    default:
        break;
}

function array_isset($key,Array $array) {
  if(isset($array[$key])) {
    return true;
  }
  return array_key_exists($key,$array);
}

有什么好主意吗?我不想使用eval

更新了,所以根据Alma Do Mundo的最终代码

$result = $array[$keys[0]];
for($i=1;$i<count($keys);$i++) {
    if(array_isset($keys[$i],$result))
        $result = $result[$keys[$i]];
    else {
        $result = null;
        break;
    }
}
通过简单的循环:
//for PHP <=5.3 replace short [] to array()
$rgData   = ['key1'=>['key2'=>['key3'=>'test','key4'=>'data'],'key5'=>'done']];
$rgKeys   = ['key1','key2','key3'];
$rgResult = $rgData[$rgKeys[0]];
for($i=1; $i<count($rgKeys); $i++)
{
   $rgResult=$rgResult[$rgKeys[$i]];
}

eval可能有一个选项,但我会说 – 永远不要使用eval – 如果你可以避免它.

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读