为了账号安全,请及时绑定邮箱和手机立即绑定

数组排序给出错误错误:无法使用组织\系统策略对象类型的对象作为数组”

数组排序给出错误错误:无法使用组织\系统策略对象类型的对象作为数组”

PHP
慕尼黑5688855 2023-07-08 15:36:06
当我打印我的数组时,它给我的是print_r($out)给出以下Array([0] => Organization\System Policies Object    (        [id:protected] => 780        [name:protected] => Apply For all    )[1] => Organization\System Policies Object    (        [id:protected] => 779        [name:protected] => Apply Critical       )[2] => Organization\System Policies Object    (        [id:protected] => 781        [name:protected] => Test Machines    )[3] => Organization\System Policies Object    (        [id:protected] => 782        [name:protected] => Dev Systems      ))我尝试使用以下代码对其进行排序$sorted = array();    foreach ($out as $key => $row)    {        $sorted[$key] = $row['name'];    }    array_multisort($sorted, SORT_ASC, $out);我尝试使用“名称”对数组进行排序,但收到错误“错误:无法使用组织\系统策略对象类型的对象作为数组”,有没有办法对此进行排序。
查看完整描述

2 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

小心你的数组中的数据对象,你无法访问 $row['name'] 应该是 $row->name ....


 

 uasort($out,fn ($prev,$next)=>$prev->name<=>$next->name);


  print_r($out);

适用于7.4以下版本



 $sortedArray=uasort($array,function($prev,$next){

     

     return $prev->name<=>$next->name;

});


print_r($sortedArray);

使用 foreach 迭代数据



foreach($out as $item)

{

    echo $item->name ; //will work

    echo  $item['name']//will not working

}

通过 ArrayObject 和 oop


$arrayObject = new ArrayObject($out);

$arrayObject->uasort(function ($a,$b){

    return $a->name<=>$b->name;

});

print_r($arrayObject->getArrayCopy());


查看完整回答
反对 回复 2023-07-08
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

您的数组是对象数组,而不是关联数组的数组。您可以将语法更改为:$sorted[$key] = $row->name;或者如果您希望将其作为关联数组,则可以键入强制转换它:

$row = (array)$row;
$sorted[$key] = $row['name'];


查看完整回答
反对 回复 2023-07-08
  • 2 回答
  • 0 关注
  • 113 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信