Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/apache/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在Smarty中访问带有连字符名称的变量?_Php_Simplexml_Smarty_Variable Names - Fatal编程技术网

Php 如何在Smarty中访问带有连字符名称的变量?

Php 如何在Smarty中访问带有连字符名称的变量?,php,simplexml,smarty,variable-names,Php,Simplexml,Smarty,Variable Names,我有一个PHP页面,它使用SimpleXml解析XML文件,然后将该对象传递给Smarty模板。我的问题是XML文件的标记名中有连字符,例如视频播放器。在PHP中,这没有问题,我只使用$xml->{'video-player'},一切都很好。另一方面,当我尝试使用这种语法时,Smarty会大发雷霆 到目前为止,我提出的唯一解决方案是使用变量来存储名称,例如 { assign var=name value="video-player" } { $xml->$name } 但至少可以说,这并

我有一个PHP页面,它使用SimpleXml解析XML文件,然后将该对象传递给Smarty模板。我的问题是XML文件的标记名中有连字符,例如
视频播放器
。在PHP中,这没有问题,我只使用
$xml->{'video-player'}
,一切都很好。另一方面,当我尝试使用这种语法时,Smarty会大发雷霆

到目前为止,我提出的唯一解决方案是使用变量来存储名称,例如

{ assign var=name value="video-player" }
{ $xml->$name }

但至少可以说,这并不十分优雅。在Smarty中引用连字符变量名是否还有另一种更好的方法?

Dwoo
中,我将尝试使用

{php}
    echo $xml->{'video-player'};
{/php}
{$xml->`video-player`}

也许在
Smarty
中它也会起作用。

你只需要把它放在单引号中

它也适用于比较块,如:

{if $variable == 'hyphenated-value'} it works! {/if}
而不是

{if $variable == hyphenated-value} do not work! {/if}

这是有道理的,但我想知道是否有一种方法可以不用求助于PHP来实现它……另一种方法是用不同的东西来更改Smarty分隔符{and},但是只做{PHP}会更容易-