抓取对象中的第一个元素(PHP)

时间:2012-01-12 14:31:28

标签: php arrays sorting object

我有一个像这样结构的对象:

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

谢谢!

1 个答案:

答案 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)强制转换,允许获取s​​impleXmlElement的实际值。