[英]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.