簡體   English   中英

在PHP的多維數組中為鍵數組使用變量

[英]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);  

這是現場演示 (摘自@Evanrose的評論

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM