Php 如何在Smarty中使用json_解码

Php 如何在Smarty中使用json_解码,php,smarty,template-engine,Php,Smarty,Template Engine,这是我第一次使用,我在将以下PHP json_decode语句翻译成Smarty友好的代码时遇到了麻烦。输出是一个数组,因为我在json_解码中使用了TRUE $itemArray = json_decode($dni-content-slider-id-prefix-saved-content-picker-item- . $promos, true) 我试过了 { assign var $itemArray = value=$dni-content-slider-id-prefix-sa

这是我第一次使用,我在将以下PHP json_decode语句翻译成Smarty友好的代码时遇到了麻烦。输出是一个数组,因为我在json_解码中使用了TRUE

$itemArray = json_decode($dni-content-slider-id-prefix-saved-content-picker-item- . $promos, true)
我试过了

{ assign var  $itemArray = value=$dni-content-slider-id-prefix-saved-content-picker-item-|cat:$promos|json_decode}

但它并没有真正起作用。有什么建议吗?

Smarty这一行几乎所有的东西都是错的;让我们按顺序看一下:

{ assign
不要在
{
和Smarty标记之间留空格;如果Smarty 3被打开,它将假定这是一个文本
{
而不是Smarty标记

var  $itemArray = 
这里似乎混合了两个不同的函数。Smarty的形式为
{assign var=some\u name value=$some\u value}
。请注意
var
参数是要分配的变量的名称,因此不需要
$

Smarty 3还有一个PHP风格,看起来像
{$some\u name=$some\u value}
(包含
$
,但不包含
分配
关键字)

这将采用变量
$dni content slider id prefix saved content picker item的内容-
将其视为字符串,并添加变量
$promos
的内容(也视为字符串)再看一遍,我发现这也是你的PHP代码所做的,但这似乎是一件非常奇怪的事情,因为第一个变量必须是类似于
“{'foo':'bar',”
,第二个类似于
“'baz':'qux'}”
。你为什么会有这样的变量

基于PHP代码是相同的,我将假设这一段在我这方面是错误的,我怀疑您想要的是一个变量名(代码运行时是另一个变量);有很多方法可以做到这一点,但这不是其中之一。这通常也是一个非常糟糕的主意;如果您想要在运行时从中选择许多类似的变量,请将它们放入关联数组中,并索引类似于
$dni content slider id prefix saved content picker items[$promos]
的内容


最后,这一部分实际上与您的问题有关。您指出,在PHP中,您将可选的
true
参数传递给
json_decode
函数,但在这个Smarty代码中,您没有这样做。这可以通过在末尾添加
:true
轻松完成,如
{assign var=itemArray value=$jsonString | json_decode:true}

Smarty的这一行中几乎所有内容都是错误的;让我们按顺序进行:

{ assign
不要在
{
和Smarty标记之间留空格;如果Smarty 3被打开,它将假定这是一个文本
{
而不是Smarty标记

var  $itemArray = 
这里似乎混合了两个不同的函数。Smarty的形式为
{assign var=some\u name value=$some\u value}
。请注意
var
参数是要分配的变量的名称,因此不需要
$

Smarty 3还有一个PHP风格,看起来像
{$some\u name=$some\u value}
(包含
$
,但不包含
分配
关键字)

这将采用变量
$dni content slider id prefix saved content picker item的内容-
将其视为字符串,并添加变量
$promos
的内容(也视为字符串)再看一遍,我发现这也是你的PHP代码所做的,但这似乎是一件非常奇怪的事情,因为第一个变量必须是类似于
“{'foo':'bar',”
,第二个类似于
“'baz':'qux'}”
。你为什么会有这样的变量

基于PHP代码是相同的,我将假设这一段在我这方面是错误的,我怀疑您想要的是一个变量名(代码运行时是另一个变量);有很多方法可以做到这一点,但这不是其中之一。这通常也是一个非常糟糕的主意;如果您想要在运行时从中选择许多类似的变量,请将它们放入关联数组中,并索引类似于
$dni content slider id prefix saved content picker items[$promos]
的内容

最后,这一部分实际上与您的问题有关。您指出,在PHP中,您将可选的
true
参数传递给
json_decode
函数,但在这个Smarty代码中,您没有这样做。这可以通过在末尾添加
:true
轻松完成,如
{assign var=itemArray value=$jsonString | json_decode:true}

什么是“不真正工作”的意思?它返回一些东西,但不是你期望的东西?什么是“不真正工作”的意思?它返回一些东西,但不是你期望的东西?