首页 > 解决方案 > 在foreach中访问带有空格的JSON键

问题描述

我正在尝试访问下面示例 JSON 中的一些键值。

{
  "Realtime Currency Exchange Rate": 
    {
        "1. From_Currency Code": "EUR",
        "2. From_Currency Name": "Euro",
        "3. To_Currency Code": "USD",
        "4. To_Currency Name": "United States Dollar",
        "5. Exchange Rate": "1.14122552",
        "6. Last Refreshed": "2018-08-14 05:07:51",
        "7. Time Zone": "UTC"
    },
    {
        "1. From_Currency Code": "USD",
        "2. From_Currency Name": "United States Dollar",
        "3. To_Currency Code": "EUR",
        "4. To_Currency Name": "Euro",
        "5. Exchange Rate": "0.87692400",
        "6. Last Refreshed": "2018-08-14 05:09:17",
        "7. Time Zone": "UTC"
    }
}

问题是键有空格。

我的FOREACH看起来像这样

$json = json_decode($data);    
$json_response = array();
foreach ($json->Realtime Currency Exchange Rate as $row) {
        $row_array = array();     
        $row_array['From'] = $row->1. From_Currency Code;        
        $row_array['To'] = $row->3. To_Currency Code;
        $row_array['value'] = $row->5. Exchange Rate;                           
       array_push($json_response, $row_array); 
 }

我曾尝试使用 foreach 语句中的密钥['Realtime Currency Exchange Rate'], [Realtime Currency Exchange Rate], [Realtime.Currency.Exchange.Rate]以及我可以在此处找到的任何其他内容,但它们都不起作用。

编辑 也尝试过这样但它没有用

foreach ($json->{'Realtime Currency Exchange Rate'} as $row) {
    $row_array = array();

        $row_array['From'] = $row->{'1. From_Currency Code'};

   array_push($json_response, $row_array); //push the values in the array
}

但是这个解决方案有效

foreach ($json as $row) {
    $row_array = array();

        $row_array['From'] = $row->{'1. From_Currency Code'};

   array_push($json_response, $row_array); //push the values in the array
}

知道如何访问密钥及其值吗?谢谢

标签: phpjsonforeach

解决方案


你可以这样做

$json->{'Realtime Currency Exchange Rate'}

希望有帮助

更新:

$data = array(
    "Realtime Currency Exchange Rate" => array(
        0 => array(
            "1. From_Currency Code" => "EUR",
            "2. From_Currency Name" => "Euro",
            "3. To_Currency Code" => "USD",
            "4. To_Currency Name"=> "United States Dollar",
            "5. Exchange Rate" => "1.14122552",
            "6. Last Refreshed" => "2018-08-14 05:07:51",
            "7. Time Zone" => "UTC"
        ),
        1 => array(
            "1. From_Currency Code" => "USD",
            "2. From_Currency Name" => "United States Dollar",
            "3. To_Currency Code" => "EUR",
            "4. To_Currency Name" => "Euro",
            "5. Exchange Rate" => "0.87692400",
            "6. Last Refreshed" => "2018-08-14 05:09:17",
            "7. Time Zone" => "UTC"
        )
    )
);

$data = json_encode($data);

$json = json_decode($data);    
$json_response = array();
foreach ($json->{'Realtime Currency Exchange Rate'} as $row) {
    echo "<pre>";
    print_r($row);
    echo "</pre>";
}

格式化的 JSON 字符串将如下所示

{
    "Realtime Currency Exchange Rate": [{
        "1. From_Currency Code": "EUR",
        "2. From_Currency Name": "Euro",
        "3. To_Currency Code": "USD",
        "4. To_Currency Name": "United States Dollar",
        "5. Exchange Rate": "1.14122552",
        "6. Last Refreshed": "2018-08-14 05:07:51",
        "7. Time Zone": "UTC"
    }, {
        "1. From_Currency Code": "USD",
        "2. From_Currency Name": "United States Dollar",
        "3. To_Currency Code": "EUR",
        "4. To_Currency Name": "Euro",
        "5. Exchange Rate": "0.87692400",
        "6. Last Refreshed": "2018-08-14 05:09:17",
        "7. Time Zone": "UTC"
    }]
}

推荐阅读