使用PHP解析/遍历JSON

使用PHP解析/遍历JSON,php,json,Php,Json,在PHP中解析此JSON后,如何在不使用foreach的情况下访问特定值 [ { "currency": "CAD", "exchange": "1" }, { "currency": "EUR", "exchange": "0.7158" }, { "currency": "GBP", "exchange": "0.5131" }, {

在PHP中解析此JSON后,如何在不使用
foreach
的情况下访问特定值

[
    {
        "currency": "CAD",
        "exchange": "1"
    },
    {
        "currency": "EUR",
        "exchange": "0.7158"
    },
    {
        "currency": "GBP",
        "exchange": "0.5131"
    },
    {
        "currency": "MXN",
        "exchange": "12.4601"
    },
    {
        "currency": "USD",
        "exchange": "0.8122"
    }
]
这样做可能吗

$string = file_get_contents("datas.json");
$json = json_decode($string, true);
$json['currency']['USD']['exchange'];

非常感谢您的帮助。

json\u decode()
获取的数据中的第一个索引是数字,从零开始。如果您打算直接访问提到GBP的部分,则必须对其进行迭代,不能直接访问

您必须至少执行一次,以创建更适合您的需要的数据结构,并避免多次迭代


我在考虑是否有可能将数据塞进一个智能对象中,以避免迭代,但我没有找到一个明显的解决方案。您必须解释为什么至少迭代一次不会达到您想要的效果,或者为什么它有您负担不起的缺点。5种货币的示例数据集看起来不太糟糕,我认为世界上最多有200种货币。性能和内存应该不是什么大问题。

json\u decode()
获取的数据中的第一个索引是数字,从零开始。如果您打算直接访问提到GBP的部分,则必须对其进行迭代,不能直接访问

您必须至少执行一次,以创建更适合您的需要的数据结构,并避免多次迭代


我在考虑是否有可能将数据塞进一个智能对象中,以避免迭代,但我没有找到一个明显的解决方案。您必须解释为什么至少迭代一次不会达到您想要的效果,或者为什么它有您负担不起的缺点。5种货币的示例数据集看起来不太糟糕,我认为世界上最多有200种货币。性能和内存应该不是什么大问题。

json\u decode()
获取的数据中的第一个索引是数字,从零开始。如果您打算直接访问提到GBP的部分,则必须对其进行迭代,不能直接访问

您必须至少执行一次,以创建更适合您的需要的数据结构,并避免多次迭代


我在考虑是否有可能将数据塞进一个智能对象中,以避免迭代,但我没有找到一个明显的解决方案。您必须解释为什么至少迭代一次不会达到您想要的效果,或者为什么它有您负担不起的缺点。5种货币的示例数据集看起来不太糟糕,我认为世界上最多有200种货币。性能和内存应该不是什么大问题。

json\u decode()
获取的数据中的第一个索引是数字,从零开始。如果您打算直接访问提到GBP的部分,则必须对其进行迭代,不能直接访问

您必须至少执行一次,以创建更适合您的需要的数据结构,并避免多次迭代


我在考虑是否有可能将数据塞进一个智能对象中,以避免迭代,但我没有找到一个明显的解决方案。您必须解释为什么至少迭代一次不会达到您想要的效果,或者为什么它有您负担不起的缺点。5种货币的示例数据集看起来不太糟糕,我认为世界上最多有200种货币。性能和内存在这里不应该是一个大问题。

您在这里定义了一个对象数组,但由于您在json_解码上使用了TRUE选项,它们将被转换为一个数组数组,因此您需要将它们作为

$string = file_get_contents("datas.json");
$json = json_decode($string, true);
echo $json[0]['currency'];  // CAD
echo $json[0]['exchange'];  // 1

如果您想使用货币名称作为密钥,则必须更改json数据文件的数据结构。

您在其中定义了一个对象数组,但由于您在json_decode上使用了TRUE选项,因此它们将转换为数组数组,因此您需要将其作为

$string = file_get_contents("datas.json");
$json = json_decode($string, true);
echo $json[0]['currency'];  // CAD
echo $json[0]['exchange'];  // 1

如果您想使用货币名称作为密钥,则必须更改json数据文件的数据结构。

您在其中定义了一个对象数组,但由于您在json_decode上使用了TRUE选项,因此它们将转换为数组数组,因此您需要将其作为

$string = file_get_contents("datas.json");
$json = json_decode($string, true);
echo $json[0]['currency'];  // CAD
echo $json[0]['exchange'];  // 1

如果您想使用货币名称作为密钥,则必须更改json数据文件的数据结构。

您在其中定义了一个对象数组,但由于您在json_decode上使用了TRUE选项,因此它们将转换为数组数组,因此您需要将其作为

$string = file_get_contents("datas.json");
$json = json_decode($string, true);
echo $json[0]['currency'];  // CAD
echo $json[0]['exchange'];  // 1
如果要将货币名称用作密钥,则必须更改json数据文件的数据结构。

如果不想在代码中看到foreach,则可以使用

$key = array_search("USD", array_column($json, "currency"));
echo $json[$key]['exchange'];
但无论如何,要找到一个精确的值,您需要迭代数组以获得精确的匹配。

如果您不想在代码中看到foreach,可以使用

$key = array_search("USD", array_column($json, "currency"));
echo $json[$key]['exchange'];
但无论如何,要找到一个精确的值,您需要迭代数组以获得精确的匹配。

如果您不想在代码中看到foreach,可以使用

$key = array_search("USD", array_column($json, "currency"));
echo $json[$key]['exchange'];
但无论如何,要找到一个精确的值,您需要迭代数组以获得精确的匹配。

如果您不想在代码中看到foreach,可以使用

$key = array_search("USD", array_column($json, "currency"));
echo $json[$key]['exchange'];
但无论如何,为了找到一个精确的值,你需要迭代数组以获得一个精确的匹配。

这个怎么样

$json = json_decode($string, true);

$currency = array();

foreach($json as $arr) {
    foreach($arr as $key => $value) {
        $currency[$key] = $value;
    }
}

echo $currency['USD']; // echoes "0.8122"
这个怎么样

$json = json_decode($string, true);

$currency = array();

foreach($json as $arr) {
    foreach($arr as $key => $value) {
        $currency[$key] = $value;
    }
}

echo $currency['USD']; // echoes "0.8122"
这个怎么样

$json = json_decode($string, true);

$currency = array();

foreach($json as $arr) {
    foreach($arr as $key => $value) {
        $currency[$key] = $value;
    }
}

echo $currency['USD']; // echoes "0.8122"
这个怎么样

$json = json_decode($string, true);

$currency = array();

foreach($json as $arr) {
    foreach($arr as $key => $value) {
        $currency[$key] = $value;
    }
}

echo $currency['USD']; // echoes "0.8122"

您需要引用数组中的特定元素。类似于
$json[4]['currency']
一旦通过
json\u decode
解析了json,它就像其他任何数据结构一样,只是一个PHP数据结构。不要让int