继续从获取解码的JSON数据中获取“数组”?

时间:2018-07-10 21:47:20

标签: php mysql arrays json mysqli

当我编码从mysql数据库获取的json数据时,我得到了:

[{"userid":"11","postid":"12"},{"userid":"13","postid":"12"},{"userid":"16","postid":"12"}]

我正在尝试仅获取这样的用户ID:11, 13, 16

解码json数据后,输出为Array。没别的。当我var_dump时,这是我的结果:

array(3) { 
        [0]=> array(2) { 
                    ["userid"]=> string(2) "11" 
                    ["postid"]=> string(2) "12" 
                } 
        [1]=> array(2) { 
                    ["userid"]=> string(2) "13" 
                    ["postid"]=> string(2) "12" 
                } 
        [2]=> array(2) { 
                    ["userid"]=> string(2) "16" 
                    ["postid"]=> string(2) "12" 
                } 

所以我知道这里有数据,只是出于某种原因而没有显示。

这是我的查询内容:

if(isset($_POST['postuserid'])){
    $uid = $_POST['postuserid'];

    $ssql = "SELECT * FROM foodid WHERE postid=$uid"; 
    $rresult = mysqli_query($db,$ssql); 
    while ($lrow = mysqli_fetch_assoc($rresult)){ 
        $ret[] = $lrow;
        $postjson = json_encode($ret);  
        $decode_postid = json_decode($postjson, true);
        $new_postid = $decode_postid;
    } 
    var_dump($new_postid);
    die($new_postid);
    // die($new_postid['userid']); is what I need along with all data userid fetched.

}

在对json数据进行编码时有这种方法起作用,而在对json数据进行解码时有这种原因吗?

2 个答案:

答案 0 :(得分:1)

尝试映射这些结果:

$db= @("list of databases")

输出

  

array(3){     [0] =>     字符串(2)“ 11”     1 =>     字符串(2)“ 13”     [2] =>     字符串(2)“ 16”   }

如果需要输出为字符串,只需使用implode函数

$new_postid = $decode_postid;
$new_postid = array_map(function($item){
    return $item['userid'];
}, $new_postid);

var_dump($new_postid);

http://php.net/manual/en/function.array-map.php

答案 1 :(得分:1)

您是否要使该数组脱离die函数?它只能接受字符串或整数。

http://php.net/manual/en/function.exit.php

您的数组在那里...只需执行以下操作:

$ids = '';
foreach ($new_postid as $post) {
    $ids .= $post['userid'] . ',';
}
$ids = rtrim($ids,',');
die($ids);