当我打印我的数组时,它给我的是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());
料青山看我应如是
TA贡献1772条经验 获得超8个赞
您的数组是对象数组,而不是关联数组的数组。您可以将语法更改为:$sorted[$key] = $row->name;
或者如果您希望将其作为关联数组,则可以键入强制转换它:
$row = (array)$row; $sorted[$key] = $row['name'];
- 2 回答
- 0 关注
- 113 浏览
添加回答
举报
0/150
提交
取消