【问题标题】:Get value from XML Array in PHP从 PHP 中的 XML 数组中获取值
【发布时间】:2016-06-14 11:26:25
【问题描述】:

我正在尝试从我的 XML 数组中获取 1 个值。

这是代码:

<?php
function objectsIntoArray($arrObjData, $arrSkipIndices = array())
{
    $arrData = array();

    // if input is object, convert into array
    if (is_object($arrObjData)) {
        $arrObjData = get_object_vars($arrObjData);
    }

    if (is_array($arrObjData)) {
        foreach ($arrObjData as $index => $value) {
            if (is_object($value) || is_array($value)) {
                $value = objectsIntoArray($value, $arrSkipIndices); // recursive call
            }
            if (in_array($index, $arrSkipIndices)) {
                continue;
            }
            $arrData[$index] = $value;
        }
    }
    return $arrData;
}
?>

Result:
<?php
$xmlUrl = "http://radiourl:port/status.xsl"; // XML feed file/URL
$xmlStr = file_get_contents($xmlUrl);
$xmlObj = simplexml_load_string($xmlStr);
$arrXml = objectsIntoArray($xmlObj);
print_r($arrXml);
?>

print_r($arrXml); 的结果这是:

    Array ( 
      [Mount-Point] => /listen.mp3 
      [Stream-Title] => VibboStream
      [Stream-Description] => name 
      [Content-Type] => audio/mpeg
      [Mount-started] => 14/Jun/2016:04:28:49 -0500 
      [Bitrate] => 128
      [Current-Listeners] => 1 
      [Peak-Listeners] => 3 
      [Stream-Genre] => Various
      [Stream-URL] => http://url [ice-bitrate] => 128
      [icy-info] => ice-samplerate=44100;ice-bitrate=128;ice-channels=2
      [Current-Song] => Artist - Title
    )

所以我想要得到的是 [Current-Song] => Artist - Title 部分。 当我回应它时,我只想看到 Artist - Title

有人可以帮我解决这个问题吗?

【问题讨论】:

    标签: php arrays xml


    【解决方案1】:

    您已经拥有 xml 对象。就用它吧。

    $artistTitle = $xmlObj->{'Current-Song'};
    

    然后从那里使用它。

    关于大括号语法here的更多信息

    【讨论】:

    • 谢谢,以前没用过xml数组,我的错!
    • 别担心。只是总是阅读文档。如果您发现自己在想“必须有更简单的方法来做到这一点”,那么可能就是这样。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多