Php 使用变量显示XML响应
你能帮我吗?解析XML时,我面临一个奇怪的问题 以下是我的PHP脚本:Php 使用变量显示XML响应,php,xml,Php,Xml,你能帮我吗?解析XML时,我面临一个奇怪的问题 以下是我的PHP脚本: $xml = "https://pastebin.com/raw/30QHhFSr"; $response = new SimpleXMLElement(file_get_contents($xml)) or die('error'); $auto = "ENDS->E0->ENDERECO"; echo $response->$auto; //output: nothing echo $respons
$xml = "https://pastebin.com/raw/30QHhFSr";
$response = new SimpleXMLElement(file_get_contents($xml)) or die('error');
$auto = "ENDS->E0->ENDERECO";
echo $response->$auto; //output: nothing
echo $response->ENDS->E0->ENDERECO; //output: SAO SEVERINO //works
为什么$response->$auto代码>不工作
谢谢。得到的是正确的,因为箭头符号实际上是一个字符串文字,当您执行以下操作时,它本身不起任何作用:
$auto = "ENDS->E0->ENDERECO";
echo $response->$auto;
echo $response->{"ENDS->E0->ENDERECO"}; // it doesn't really exist
另一种方法是,您可以处理字符串,并使用explode
将其分解,然后使用array reduce
我的想法是:
$xml = 'https://pastebin.com/raw/30QHhFSr';
$response = new SimpleXMLElement(file_get_contents($xml)) or die('error');
$auto = 'ENDS->E0->ENDERECO';
echo array_reduce(explode('->', $auto), function ($o, $p) {
return $o->$p;
}, $response);
->用于在实例上调用方法或访问实例属性
-表示XML文档中的元素
$response
是simplexmlement
的一个实例,您需要这样定义
$level1 = "ENDS";
$level2 = "E0";
$level3 = "ENDERECO";
现在,您可以使用
$response->$level1->$level2->$level3;
你不能自动做你想做的事,你必须分解$auto
并逐级执行。我该怎么做?奇怪的问题?不,它只是你的箭头符号实际上是一个字符串文字,这就是为什么没有输出你不能用字符串变量pass作为对象键来获取值,所以必须遵循以下过程:[$response->ENDS->E0->ENDERECO]顺便说一句,这里有一把小提琴