循环时将对象添加到数组

时间:2014-12-12 15:33:36

标签: php arrays pdo

我的一个PDO语句返回一个数组。对于JSON编码,我想将此数组转换为Object并将其附加到另一个数组。

     while($row = $sth->fetch()){
            foreach($row as $key=>$value){ 
                    $r = (object) $row;
                    $recordArray[] = $r;
            }
    }

    $json->record = $recordArray;
    echo json_encode($json);

$recordArray似乎保持空白但如果我在循环中编写$recordArray[] = "test"则不会。所以我的对象$r一定有问题,但我无法发现错误。任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

这是一种更简单的方法

echo json_encode(array('record'=>$sth->fetchAll(PDO::FETCH_OBJ)));

答案 1 :(得分:0)

您的foreach错误:在正文中您使用迭代的对象。 你可能是这个意思吗?

$records = [];
while($row = $sth->fetch()) {
    $current = [];
    foreach($row as $key => $value) {
        $current[$key] = $value;
    }
    $records[] = $current;
}

答案 2 :(得分:0)

如果我理解,您希望循环$row并将$row中的每个对象添加到$recordArray

然后你应该这样做:

while($row = $sth->fetch()){
    foreach($row as $value){ 
        $recordArray[] = $value;
    }
}