[英]Use A Variable for an Array of Keys in Multidimentional Arrays in PHP
我有一个数组$ json_data,我正在尝试使用for循环进行解析:
这是数组:
array(2) {
["data"]=>
array(4) {
["children"]=>
array(25) {
[0]=>
["first_key"]=>
array(50) {
["second_key"]=>
string(9) "My Title"
}
}
}
}
然后在PHP中,将其设置为$ json_data并开始使用for循环提取数据
foreach ( $json_data['data']['children'] as $key => $value ) {
echo $title = $value['first_key']['second_key'];
}
按预期输出“我的标题”。
我的问题(如果我的问题措辞不好,请告知)是,我可以将键设置为变量吗? 我知道我不能将其设置为字符串,但是可以将键数组传递给$ value,例如:
$key_array = array('first_key' => array('second_key'));
foreach ( $json_data['data']['children'] as $key => $value ) {
echo $title = $value[$key_array];
}
或类似的东西?
制作一个可以将$ array传递给设置了$ key_array的函数的函数也很棒,例如:
回声get_array_value($ array,$ array_keys);
但希望朝正确的方向前进。
首先,请看这里:
$key_array = array('first_key' => array('second_key'));
声明一个简单的数组,该数组包含要从原始数组$json_data
获取其值的所有键,而不是声明键的多维数组,如下所示:
$array_keys = array('second_key', 'another_key');
其次,根据您的问题:
制作一个可以将
$array
传递给设置了$key_array
的函数的函数也很棒,例如:echo get_array_value( $array, $array_keys );
是的,这肯定是可能的。 解决方案是:
get_array_value()
,并将原始数组$json_data
和键数组$array_keys
传递给该函数。 get_array_value()
函数内创建一个foreach
循环,该循环将遍历$array_keys
数组。 在循环的每次迭代中,调用另一个递归实用程序函数get_array_value_utility()
。 get_array_value_utility()
函数将递归遍历数组,并从数组中获取所需的值。 这是代码 :
function get_array_value_utility($array, $key){
foreach($array as $k => $v){
if($key == $k){
return $v;
}else if(is_array($v)){
$v = get_array_value_utility($v, $key);
if ($v != null) return $v;
}
}
}
function get_array_value($array, $array_keys){
$values = array();
foreach($array_keys as $key){
$values[] = get_array_value_utility($array, $key);
}
return $values;
}
$array_keys = array('second_key', 'another_key');
$values = get_array_value($json_data, $array_keys);
// display $values array
var_dump($values);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.