PHP数组警告:从空值创建默认对象

时间:2016-01-08 17:40:38

标签: php arrays object

我已将MySQL查询中的值转换为数组,以便我可以对它们进行排序。这一切都很好,除了我收到很多错误

 Warning: Creating default object from empty value 

这样我就可以根据post_id和quality

对数组进行排序
$count = 0;
$searcharticles = new stdClass();
$postid = 0;
while ($row = mysqli_fetch_object($result1) ) {

    $postid     = $row->ID;
    $title      = $row->post_title;
    $titlescore = $row->titlescore;
    $quality    = $row->quality;

    $searcharticles->$postid->post_id =$postid;
    $searcharticles->$postid->title =$title;
    $searcharticles->$postid->titlescore = $titlescore;
    $searcharticles->$postid->quality =$quality;

$count ++;
} 

Stackexchange上的一些帖子表明我应该加入     $ searcharticles = new stdClass();

但这还没有解决问题

我希望删除错误,而不仅仅是取消警告。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

你收到警告

  

警告:从空值

创建默认对象

因为你做了

$searcharticles->$postid->post_id = $postid;

您的$searcharticles是StdClass。您分配属性$postId,然后立即链接另一个属性post_id,这会强制PHP创建一个新的默认对象。

为避免这种情况,请在链式方法调用之前输入:

$searcharticles->$postid = new StdClass;
$searcharticles->$postid->post_id =$postid;
$searcharticles->$postid->title =$title;
$searcharticles->$postid->titlescore = $titlescore;
$searcharticles->$postid->quality =$quality;

答案 1 :(得分:0)

也许您的问题不是$ searcharticles,可能是$ row。

尝试

$searcharticles = new stdClass; AND $row = new stdClass;

祝你好运!