0

使用 Dom,我试图创建一个值为 false 的元素。但是,当我给它的值为 false 时,它​​只是将一个空字符串作为值。我认为这是因为默认值为 false。有没有办法解决这个问题?

$dom = new DOMDocument('1.0');

$element = $dom->createElement('my_element', false);
$dom->appendChild($element);

var_dump($dom->saveXML());

// returns string(48) "<?xml version="1.0"?><my_element></my_element>"

提前致谢

4

3 回答 3

3
$element = $dom->createElement('my_element', 'false');

第二个参数是一个值。false是一个布尔值。

于 2013-07-25T07:45:12.560 回答
1

如果您想要在 generated 中的值falsemy_elementxml需要 write'false'因为您将 a 附加string到您的元素,而不是 a boolean

正如您从文档 DOMDocument::createElement中看到的,具有以下签名:

DOMDocument::createElement ( string $name [, string $value ] )

这意味着预期的第二个参数类型是string. 当您boolean作为参数传递时,它将转换为string. 当您将其转换为( Demo ) 时,false计算结果为空字符串 ( string(0) "") 和( )。true1string(1) "1"string

有关类型杂耍的更多信息,请阅读文档

注意: 类型杂耍是 php 的阴暗面,所以我建议避免混合变量类型。

于 2013-07-25T07:46:11.373 回答
0

$element = $dom->createElement('my_element', 'false');

于 2013-07-25T10:58:30.117 回答