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

PHP数组警告:从空值创建默认对象,php,arrays,object,Php,Arrays,Object,我将MySQL查询中的值放入一个数组中,以便对它们进行排序。这一切都很好,除了我有很多错误 Warning: Creating default object from empty value 这样我就可以根据post_id和质量对数组进行排序 $count = 0; $searcharticles = new stdClass(); $postid = 0; while ($row = mysqli_fetch_object($result1) ) { $postid =

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

 Warning: Creating default object from empty value 
这样我就可以根据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 ++;
} 
Stackexchange上的一些帖子表明我应该添加 $searcharticles=新stdClass()

但这并没有解决问题

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

有什么想法吗?

你得到警告了吗

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

因为你知道

$searcharticles->$postid->post_id = $postid;
您的
$searcharticles
是一个StdClass。分配属性
$postId
,然后立即链接另一个属性
post\u id
,这将强制PHP创建一个新的默认对象

要避免这种情况,请将其放在链式方法调用之前:

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

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

试一试


祝你好运

可能是重复的不我先试过了。这就是我尝试添加$searcharticles=new stdClass()的原因;$postid=new stdClass();代码行。是$postid是一个整数。我已将代码更改为$postid=0;但是错误是相同的,你想创建什么类型的结构?创建由整数
$postid
命名的对象属性令人困惑。如果
$searcharticles
是一个集合,那么它应该是一个对象数组,例如,您正在创建
$searcharticles[$postid]->title=$title
。。。。然后需要首先将每个数组项初始化为新的stdClass:
$searcharticles[$postid]=new stdClass()
而不是将
$searcharticles
创建为stdClass,而是将其创建为
数组()
$searcharticles = new stdClass; AND $row = new stdClass;