在 PHP 变量中存储多个 JSON 对象值



我正在尝试在 php 变量中为单个对象存储多个 json 值,但到目前为止还没有成功。当我尝试下面的代码时,它会存储对象的最后一个值,但不会同时存储两者。

$_POST = json_decode(file_get_contents('php://input'));
foreach($_POST->repliesCounts as $replies_counts)
{
$replies_counts_userid = $replies_counts->userId . " | ";
$replies_counts_repliescount = $replies_counts->repliesCount . " | ";
}

下面是 JSON 字符串:

"repliesCounts": 
[
{
"userId": 789,
"repliesCount": 4
},
{
"userId": 111,
"repliesCount": 3
}
]

我的问题是,如何将两组值存储在一个变量中?最好用 |符号或类似的东西。

您可以使用第二个参数作为truejson_decode返回关联数组而不是对象。使用array_column从数组中提取列并将其转换为简单数组。使用implode连接简单数组。

$str = '{"repliesCounts": [{ "userId": 789,"repliesCount": 4},{"userId": 111,"repliesCount": 3}]}';
$arr = json_decode($str, true);
//Make associative array into a simple array
$replies_counts_userid = array_column( $arr['repliesCounts'], 'userId' );
$replies_counts_repliescount = array_column( $arr['repliesCounts'], 'repliesCount' );
//implode array
$replies_counts_userid = implode(' | ', $replies_counts_userid);
$replies_counts_repliescount = implode(' | ', $replies_counts_repliescount);

这将导致

$replies_counts_userid = '789 | 111';
$replies_counts_repliescount = '4 | 3';

$replies_counts_userid = $replies_counts->userId . " | ";

此行完全用新值替换旧值。您还需要在此处连接:

$replies_counts_userid .= $replies_counts->userId . " | ";

应该工作。(注意=前的.(

最新更新