0

抱歉,但我不是 JS 大师,而且我对此一无所知。如何在 javascript 输出中使用 smarty 生成 multidmensionall 数组。

var kreator_elements = new Array();

{foreach $kreator_elements as $element}

if(!kreator_elements[{$element->id_atrib}] instanceof Array)
    var kreator_elements[{$element->id_atrib}] = new Array();

kreator_elements[{$element->id_atrib}][{$element->id}] = new Array();
kreator_elements[{$element->id_atrib}][{$element->id}]['u_img'] = '{$element->getImageLink()}';
kreator_elements[{$element->id_atrib}][{$element->id}]['u_ico'] = '{$element->getIconLink()}';

{/foreach}

尝试了几种方法,使用 [] 等。目前它们都不适合我。在控制台中总是会出现某种错误。

4

1 回答 1

1

尝试在纯 PHP 中构建关联数组,而不是使用 Smarty:

$tmp = array();
foreach ($kreator_elements as $element) {
    $tmp[$element->id_atrib][$element->id] = array(
        'u_img' => $element->getImageLink(),
        'u_ico' => $element->getIconLink()
    );
}
$kreator_elements_json = json_encode($tmp);

确保所有字符串都是 UTF-8 编码的,否则 json_encode 将失败。如果没有,请在每个非 Unicode 字符串上运行 iconv()。

结果可以回显,因为它是正确的 javascript 对象并且不需要 smarty。

在用另一种语言构建一种语言时,请始终尝试使用尽可能少的语言。如果您真的必须这样做,请记住转义每个字符串,因为只有一个 ' 符号或换行符可能会导致生成的代码出现语法错误。

于 2013-02-27T14:10:21.193 回答