【问题标题】:Store multiple JSON object values in PHP variable在 PHP 变量中存储多个 JSON 对象值
【发布时间】:2018-07-06 15:51:48
【问题描述】:

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

$_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
    }
  ]

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

【问题讨论】:

    标签: php json object


    【解决方案1】:

    您可以json_decode 将第二个参数设置为true 以返回关联数组而不是对象。使用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';
    

    【讨论】:

    • 请注意,array_column 在 PHP 7 中也适用于对象数组。
    • 我不知道。我们每天都学到新东西。谢谢! :)
    • 谢谢你,我选择了另一个答案,因为 json 字符串的其余部分已经编码为对象,但这是有用的信息
    【解决方案2】:

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

    这一行将旧值完全替换为新值。您还需要在此处连接:

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

    应该可以。 (注意=之前的.

    【讨论】:

    • 另外,如果您还没有这样做的话,在foreach 循环之外声明这些变量可能是个好主意。
    • 完美,谢谢!完全忘记了。连接运算符
    猜你喜欢
    • 1970-01-01
    • 2012-02-16
    • 2011-01-03
    • 2023-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多