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

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了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[$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 – 如果你可以避免它.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 通过一系列键在多维数组中深入获取值全部内容,希望文章能够帮你解决php – 通过一系列键在多维数组中深入获取值所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。