我有一个像这样结构的对象:
Array
(
[0] => SimpleXMLElement Object ( [0] => Europe )
[1] => SimpleXMLElement Object ( [0] => South America )
[3] => SimpleXMLElement Object ( [0] => North America )
[4] => SimpleXMLElement Object ( [0] => Asia )
)
我正在尝试按字母顺序对对象进行排序。我尝试在整个数组上使用sort(),但它不起作用。我假设它只是抓取对象的名称,在所有情况下都是相同的,并对它们进行排序。我试图访问每个对象内的文本,但似乎没有带来'SimpleXMLElement Object()'文本。我如何访问该文本,并且可能仅使用文本值重新创建一个新数组?
编辑:我尝试了以下内容:
$ regions = sort($ regions); $ regions = usort($ regions);
谢谢!
答案 0 :(得分:3)
您可以使用usort:
<?php
function pony_sorting($a, $b)
{
if ((string)$a[0] == (string)$b[0) {
return 0;
}
return ((string)$a[0] < (string)$b[0]) ? -1 : 1;
}
usort($a, "pony_sorting");
这将保留数组的数据结构。但是如果你不关心你的SimpleXML元素,只需将它导出一个干净且更节省内存的数组。
$clean = array();
foreach ($a as $simplexml)
{
$clean[] = (string)$simplexml[0];
}
注意(string)强制转换,允许获取simpleXmlElement的实际值。