【问题标题】:Can this iteration through a XML be rewritten?可以重写通过 XML 的迭代吗?
【发布时间】:2016-08-04 16:14:17
【问题描述】:

我有下面的代码来遍历一个 xml 文件。

$nodelist = $xml->getElementsByTagName('cv');
foreach ($nodelist as $node) {
   $naam = $node->getElementsByTagName('naam');
   $naamid = $naam->item(0)->nodeValue;
}

有没有办法在一行中获取值?

$nodelist = $xml->getElementsByTagName('cv');
foreach ($nodelist as $node) {
   $naamid = <a one line to get the nodevalue of naam out of the  xml>;
}

【问题讨论】:

  • $naamid = $node->getElementsByTagName('naam')->item(0)->nodeValue; ??
  • 是的,这行得通。谢谢
  • 为什么有人反对我?

标签: php optimization


【解决方案1】:

您甚至可以在一行中完成整个程序,使用生成器您可以创建一个单行函数来获取 naam 元素的所有实例:

// Returns a generator which gets all elements with 'naam'
function getNaamElements()
{
    foreach ($xml->getElementsByTagName('cv') as $node) 
    {
        yield $node->getElementsByTagName('naam')->item(0)->nodeValue;
    }
}

// To get an array:
$array = iterator_to_array(getNaamElements());

// To loop over all 'naam' elements in another loop, use the generator instead
foreach (getNaamElements() as $naam)
{
    // Do stuff with $naam
}

【讨论】:

    猜你喜欢
    • 2010-11-15
    • 2014-06-23
    • 2022-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 2011-03-17
    相关资源
    最近更新 更多