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

Jon*_*817 3 php arrays object

我已经将 MySQL 查询中的值放入一个数组中,以便我可以对它们进行排序。一切都很好,除了我遇到很多错误

 Warning: Creating default object from empty value 
Run Code Online (Sandbox Code Playgroud)

这样我就可以根据 post_id 和质量对数组进行排序

$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 ++;
} 
Run Code Online (Sandbox Code Playgroud)

Stackexchange 上的一些帖子指出我应该添加 $searcharticles = new stdClass();

但这并没有解决问题

我希望消除错误,而不仅仅是抑制警告。

有任何想法吗?

Gor*_*don 6

你得到警告

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

因为你做

$searcharticles->$postid->post_id = $postid;
Run Code Online (Sandbox Code Playgroud)

$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;
Run Code Online (Sandbox Code Playgroud)