遍历 PHP 中的 JSON 字符串?

Iterate through JSON String in PHP?

这似乎是一个非常简单的问题,但我有点挣扎:我通过 JavaScript 收到一个 JSON 字符串。现在我想遍历元素。生成的字符串具有以下形式:{"title":value,"title2":value}

如何在不知道键和值的情况下遍历此 JSON 字符串?我想得到这个输出:

title -> value

title2 -> value2

我这样试过:

$json = file_get_contents('php://input');
$array = json_decode($json,true);
$response = "Test";
foreach($array as $key=>$val) {
    $response = $response. "$key : $val";
}

echo json_encode($response);

它只是returns“测试”。如果我将它更改为 echo json_encode($array),它 returns 提到的 JSON String.

你在问题中提到了 javascript 和 php,所以我将同时回答这两个问题。这是JS,两种不同的方式。我相信 foreach 现在不再强调有利于 (of) 构造,但我主要不在 JS 中工作:

var json = '{"title": 12, "title2": "text"}';
var data = JSON.parse(json);

Object.keys(data).forEach(function(key) {
  console.log(key + ' -> ' + data[key])
})

for(key of Object.keys(data)) {
  console.log(key + ' -> ' + data[key]);
}

对于PHP:

您可以使用 json_decode:

将 json 字符串解析为数组
$json = '{"title": 12, "title2": "text"}';
$arr = json_decode($json, true);
foreach($arr as $key=>$val) {
    echo "$key : $val";
}

true 将其解析为数组而不是 std 对象。

https://www.php.net/manual/en/function.json-decode.php

由于响应的格式,您必须解码已解码的格式才能按需获取对象

$json = '{"title": 12, "title2": "text"}';
$encoded=json_encode($json);
$decoded=json_decode($encoded);
$ddecode=json_decode($decoded);
foreach($ddecode as $key=>$val) {
    echo "$key -> $val";
}

输出:

title -> 12 title2 -> text