抓住的第一个元素中的对象(PHP)
问题描述:
我有一个对象的结构,像这样:抓住的第一个元素中的对象(PHP)
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 = usort($ regions);
谢谢!
答
您可以使用:
<?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];
}
注意(字符串)强制转换,允许获取simpleXmlElement的实际值。
+0
我大多只是在重新创建只有值的数组,没有对象,所以我使用你提供的代码的后半部分,然后在该数组上使用简单的sort()。谢谢! – jasonaburton 2012-01-12 14:43:13
你试过用usort()吗? – 2012-01-12 14:33:38
是的,它给出了相同的结果 – jasonaburton 2012-01-12 14:36:42
关于usort的一点是给它一个自定义的排序功能:http://www.php.net/manual/en/function.usort.php – Damien 2012-01-12 14:39:38