我有一个xml文件:
<?xml version="1.0" encoding="utf-8" ?>
<transaction dsxml_version="1.08">
<action>action1</action>
<action>action2</action>
</transaction>
如果我使用simplexml,我可以使用以下代码
访问第一个“动作” $xml = simplexml_load_string($xml_content);
echo $xml->action; // Write "action1"
echo $xml->action[0]; // Write "action1"
echo $xml->action[1]; // Write "action2"
现在我创建一个数组并尝试以相同的方式访问它。但它确实有效。
我们有一个庞大的php skipt,它使用包含逻辑错误的简单xml。如果我可以模拟简单的xml,我可以在一个位置修复此错误
答案 0 :(得分:1)
试试这个:
current($xml->action);
答案 1 :(得分:1)
echo array_shift(array_slice($xml->action, 0, 1));
或者如果您不担心损坏原始数组$xml->action
,您可以使用以下
echo array_shift($xml->action);
使用array_shift将保证您获得第一个元素,如果它是编号或关联的。
答案 2 :(得分:1)
您可以创建模拟您正在寻找的行为的假冒或模拟对象:
$action = new SimpleXMLArrayMock($action_array);
$xml->action = $action;
echo "\nFake:\n";
echo $xml->action, "\n"; // Write "action1"
echo $xml->action[0], "\n"; // Write "action1"
echo $xml->action[1], "\n"; // Write "action2"
/**
* Mock SimpleXML array-like behavior
*/
class SimpleXMLArrayMock extends ArrayObject
{
private $first;
public function __construct(array $array)
{
$this->first = (string) $array[0];
parent::__construct($array);
}
public function __toString()
{
return $this->first;
}
}
答案 3 :(得分:0)
使用xpath,以便找到元素
答案 4 :(得分:0)
这样可行:
foreach($myarray as $key => $val)
{
print $val;
//if you don't need the rest of the elements:
break;
}
<强>加了:强>
你甚至可以使它成为一个功能:
function get_first_element($myarray)
{
foreach($myarray as $key => $val)
{
return $val;
}
}