我正在使用MaterializeCSS autocomplete,并且想使用我的PHP数组之一将所有可能的选项输出到表单中。请参阅下面的当前代码。
const ac = document.querySelector('.autocomplete');
M.Autocomplete.init(ac, {
data: {
"Test1": null,
"Test2": null,
"Test3": null
},
});
我非常想使用一个简单的$ keysArray来输入Test1,Test2,Test3选项等。但是,我从MaterializeCSS页面上了解到,自动完成功能使用的是对象而不是数组。因此,我尝试使用各种不同的方法将$ keysArray转换为对象:
<?php
$keysArray = array (
"Test1",
"Test2",
"Test3"
);
?>
var tempArray = <?php echo json_decode(json_encode($keysArray)); ?>; // Doesn't work
var tempArray = <?php echo json_decode(json_encode($keysArray, JSON_FORCE_OBJECT)); ?>; // Also doesn't work
const ac = document.querySelector('.autocomplete');
M.Autocomplete.init(ac, {
data: tempArray;
});
没有tempArray的工作。如果有人能帮助我弄清我做错了什么,我将不胜感激。
答案 0 :(得分:1)
您将在对其进行编码后立即将其解码回数组。删除json_decode
。
<?php
$keysArray = array (
"Test1",
"Test2",
"Test3"
);
?>
var tempArray = <?php echo json_encode($keysArray); ?>;
const ac = document.querySelector('.autocomplete');
M.Autocomplete.init(ac, {
data: tempArray;
});
答案 1 :(得分:1)
将数组转换为类似的键值结构:
$keysArray = array(
"Test1" => null,
"Test2" => null,
"Test3" => null,
);
echo json_encode($keysArray); // {"Test1":null,"Test2":null,"Test3":null}
可以将其转换为:
$array = array('Test1', 'Test2', 'Test3');
$keysArray = array_combine($array, array_fill(0, count($array), null));