我正在尝试在 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
}
]
我的问题是,如何将两组值存储在一个变量中?最好用 |符号或类似的东西。
您可以使用第二个参数作为true
json_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 . " | ";
应该工作。(注意=
前的.
(