【问题标题】:Grabbing the first element in an object (PHP)抓取对象中的第一个元素 (PHP)
【发布时间】:2012-01-12 14:31:27
【问题描述】:

我有一个结构如下的对象:

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 = 排序($regions); $regions = usort($regions);

谢谢!

【问题讨论】:

标签: php arrays sorting object


【解决方案1】:

你可以使用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) cast,允许获取 simpleXmlElement 的实际值。

【讨论】:

  • 我主要只是对重新创建一个只有值而没有对象的数组感兴趣,所以我使用你提供的代码的后半部分,然后只使用一个简单的 sort()大批。谢谢!
猜你喜欢
  • 2011-04-26
  • 2019-06-20
  • 2022-01-19
  • 2012-03-17
  • 2016-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-04
相关资源
最近更新 更多