如何在多维数组PHP中获取特定键的值

时间:2017-02-05 01:21:23

标签: php

我有一些数组,下面是这些数组的2个例子。我想获得关键模式的价值。我们不知道那些数组是哪个索引。我尝试了以下方法:

$text1 = array(
           'type'=>'balance',
           'lang'=> array(
                  'text'=>array(
                      'en'=>array('mode'=>'ussd', 'tet'=>'Your balance is'),
                      'ru'=>array('mode'=>'ussd', 'tet'=>'vash balance'),
                  ),
               ),
           );

$text2 = array(
           'type'=>'balance',
           'lang'=> array(
                  'text'=>array(
                      'en'=>array(
                          'success'=>array(
                               'mode'=>'ussd', 
                               'tet'=>'Your balance is'), 
                          'error'=>array(
                               'mode'=>'ussd',
                               'tet'=>'Your balance is err')
                             ),
                      'ru'=>array(
                           'success'=>array(
                                'mode'=>'ussd',
                                'tet'=>'vash balans'), 
                            'error'=>array(
                                'mode'=>'ussd', 
                                'tet'=>'vash balans is err'
                                )
                            ),
                  ),
               ),
           );          

function GetKey($key, $search)
{
    foreach ($search as $array)
    {
        if (array_key_exists($key, $array))
        {
            return $array[$key];
        }
    }

    return false;
}

$tmp = GetKey('mode' , $text1);
echo $tmp;

返回: 警告:array_key_exists()期望参数2为数组,字符串在第27行的C:\ xampp \ htdocs \ test \ index.php中给出

根据php.net:array_key_exists()将仅搜索第一维中的键。 找不到多维数组中的嵌套键

1 个答案:

答案 0 :(得分:0)

这将以递归方式调用自身,直到找到第一个键,并返回该值。它可能会扩展它以收集所有值,甚至可以为每个值返回索引数组。

<script>
    function getParamValue(paramName) {
        var url = window.location.search.substring(1);
        var qArray = url.split('&');
        for (var i = 0; i < qArray.length; i++) {
            var pArr = qArray[i].split('=');
            if (pArr[0] == paramName)
                return pArr[1];
        }
    }

    // grap the video & poster frame refs from url
    var videoSrc = getParamValue('videoSrc');
    videoSrc = "assets/videos/" + videoSrc;

    var poster = getParamValue('poster');
    poster = "assets/images/" + poster;

    videojs("videoPlayer", {}, function () {
        this.src(videoSrc);
        this.poster(poster);
        this.load();
    });

</script>

修改:查找所有值。该函数现在不返回,只是使用function GetKey($key, $array) { if (is_array($array)) { foreach ($array as $k => $v) { if ($k == $key) { return $v; } elseif (is_array($v)) { return GetKey($key, $v); } } } else { return false; } } 将结果推送到所有递归范围内的数组中。

global