我有一些数组,下面是这些数组的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()将仅搜索第一维中的键。 找不到多维数组中的嵌套键。
答案 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