如何遍历具有标签>值结构的PHP多维数组



PHP新手(来自C#(。我有一个数组($metaarray(,如果我把json_encode((放到屏幕上,它的值是:

[
{
"measure":"Walking","record":"steps","latestres":"6870","datet":"2022-08-31"
},{
"measure":"","record":"kilograms","latestres":"117","datet":"2022-09-12"
},{
"measure":"","record":"","latestres":null,"datet":"2022-09-12"
},{
"measure":"Walking","record":"steps","latestres":"6840","datet":"2022-09-12"
},{
"measure":"Bodyweight","record":"kilograms","latestres":"92","datet":"2022-09-12"
},{
"measure":"Benchpress","record":"kilograms","latestres":"90","datet":"2022-09-12"
}
]

有没有一种简单的方法可以让我遍历元数组,或者简单地引用一个记录?例如,我通常会做这样的事情:

$latestres = $metaarray[0][2];

应该是";6870〃-然而,当我这样做时,它不会返回任何结果。

有没有一种方法可以很容易地引用上面数组中的特定值(例如,第一个记录、"latestres"或第三个值(?

我不知道这是否对您有帮助,但$data[2]并不代表数组中的第三项,除非数组恰好是线性创建的(称为列表(。在PHP中,2实际上是映射(名称/值对(的关键。所以,除非真的有一个索引键,否则你无法访问它。你可以在这里看到我所说的演示。

您可以使用以下答案中的一个技巧来绕过功能/限制:https://stackoverflow.com/a/24825397/231316

function getNthItemFromArray(array $array, int $idx)
{
return $array[array_keys($array)[$idx]];
}

很明显你会增加一些警卫。

正如每个人所指出的,在编码之前,您应该真正从数据开始。然而,假设无论您有什么JSON字符串,您都可以告诉解码器给您一个关联数组,而不是一个对象。把这些放在一起,你可以做一些类似的事情:

$json = <<<EOT
[
{
"measure":"Walking","record":"steps","latestres":"6870","datet":"2022-08-31"
},{
"measure":"","record":"kilograms","latestres":"117","datet":"2022-09-12"
},{
"measure":"","record":"","latestres":null,"datet":"2022-09-12"
},{
"measure":"Walking","record":"steps","latestres":"6840","datet":"2022-09-12"
},{
"measure":"Bodyweight","record":"kilograms","latestres":"92","datet":"2022-09-12"
},{
"measure":"Benchpress","record":"kilograms","latestres":"90","datet":"2022-09-12"
}
]
EOT;
$decoded = json_decode($json, true);
echo getNthItemFromArray($decoded[0], 2);
function getNthItemFromArray(array $array, int $idx)
{
return $array[array_keys($array)[$idx]];
}

此处演示:https://3v4l.org/POdma

最新更新