【问题标题】:Why do I get null after using ->value (php / xpath / xml query)?为什么使用 ->value (php / xpath / xml 查询) 后我得到 null?
【发布时间】:2018-12-30 09:56:40
【问题描述】:

我查询了我的 xml 文件。我现在想将结果(id)保存到 json 文件中。

问题是我得到的结果:

“用户”:{“0”:“迈克尔”}

但我需要:

“用户”:“迈克尔”

我使用的代码是:

$ids = [];

$idAttributes = $xmlfile->xpath("myquery...");
foreach ($idAttributes as $idAttribute) {

    $ids[] = $idAttribute[0]; 
}

print_r("My output : " . $ids[0]);

$user1 = $ids[0];
$user2 = $ids[1];
$user3 = $ids[2];

我也试过 $idAttribute->value。只获取我可以保存到我的 json 的名称。但我只得到空值......当我打印 id 时。我以正确的方式得到它,例如“汤姆”。我怎样才能将它保存为“汤姆”而不是 “用户”:{“0”:“迈克尔”}?

更新

IDs var_dump: 

string(14) "The IDS: Array" string(19) " 

ID i : " string(14) "The IDS: Array" string(19) " 
ID i : " string(14) "The IDS: Array" string(19) " 
ID i : " 

My output : Bill

【问题讨论】:

  • 在for循环之后$idsvar_dump分享内容好吗?
  • @DavidWinder 我现在更新了它。请看一看。打印后我得到比尔,但在我保存后它的格式与描述的一样。 :(
  • 目前还不清楚我们应该在调试输出中看到什么。
  • 我唯一的问题是如何摆脱 ids[0] 输出“Michael”而不是 {“0”:“Michael”}。我也试过 ids[0]['0'] 但我得到了同样的结果。 @deceze 当我打印 ids[0] 时,它只打印迈克尔,但将其保存到我的 json 格式为 { "0": "Michael" }

标签: php arrays json xml xpath


【解决方案1】:

字符串转换值(string) $idAttribute[0];

$ids = [];

$idAttributes = $xmlfile->xpath("myquery...");
foreach ($idAttributes as $idAttribute) {

    $ids[] = (string) $idAttribute[0]; 
}

print_r("My output : " . $ids[0]);

$user1 = $ids[0];
$user2 = $ids[1];
$user3 = $ids[2];

SimpleXML 中的每个节点都是一个对象。它有一个__toString 方法将其转换为字符串。

如果您对该对象使用print/echo:它还显示“字符串”值,而不是当前的真实状态,是一个对象。使用print_rvar_dump 可以正确查看。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-14
    • 2015-12-13
    • 1970-01-01
    • 2010-12-27
    • 1970-01-01
    相关资源
    最近更新 更多