猿问

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

当我打印我的数组时,它给我的是


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);

我尝试使用“名称”对数组进行排序,但收到错误“错误:无法使用组织\系统策略对象类型的对象作为数组”,有没有办法对此进行排序。


慕尼黑5688855
浏览 118回答 2
2回答

饮歌长啸

小心你的数组中的数据对象,你无法访问 $row['name'] 应该是 $row->name ....&nbsp;&nbsp;uasort($out,fn ($prev,$next)=>$prev->name<=>$next->name);&nbsp; print_r($out);适用于7.4以下版本&nbsp;$sortedArray=uasort($array,function($prev,$next){&nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp;return $prev->name<=>$next->name;});print_r($sortedArray);使用 foreach 迭代数据foreach($out as $item){&nbsp; &nbsp; echo $item->name ; //will work&nbsp; &nbsp; echo&nbsp; $item['name']//will not working}通过 ArrayObject 和 oop$arrayObject = new ArrayObject($out);$arrayObject->uasort(function ($a,$b){&nbsp; &nbsp; return $a->name<=>$b->name;});print_r($arrayObject->getArrayCopy());

料青山看我应如是

您的数组是对象数组,而不是关联数组的数组。您可以将语法更改为:$sorted[$key] = $row->name;或者如果您希望将其作为关联数组,则可以键入强制转换它:$row&nbsp;=&nbsp;(array)$row; $sorted[$key]&nbsp;=&nbsp;$row['name'];
随时随地看视频慕课网APP
我要回答