我已经将 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();
但这并没有解决问题
我希望消除错误,而不仅仅是抑制警告。
有任何想法吗?
你得到警告
警告:从空值创建默认对象
因为你做
$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)