将php关联数组转换为javascript对象

Gro*_*ler 19 javascript php arrays jquery

我正在尝试将中文单词作为键加载,将它们的英文翻译作为数据库中的值加载到php数组中,以便我可以在JavaScript的客户端使用它们.所以我将PHP密钥:值对加载到JavaScript数组中,并尝试将结果输出为键值对,如下所示:

stuff : Ni, You 
stuff : Ta, Him or Her
stuff : Wo, I
Run Code Online (Sandbox Code Playgroud)

中文和英文单词加载在关系数据库中.

PHP:

$wordsArray = array();               
while ($row = $sql->fetch_assoc()) {
    $wordsArray[$row['chinese']] = $row['english'];
}
Run Code Online (Sandbox Code Playgroud)

Javascript:这里我希望$ .each将键输出为字符串,而不是数字索引.所以当我尝试var words = [<?php echo '"'.implode('","', $wordsArray).'"' ?>];作为阵列时,我得到了:

stuff : 0, You 
stuff : 1, Him or Her
stuff : 2, I
Run Code Online (Sandbox Code Playgroud)

当我真的在寻找:

stuff : Ni, You 
stuff : Ta, Him or Her
stuff : Wo, I
Run Code Online (Sandbox Code Playgroud)

所以我改成words了一个对象,以便$.each可以将键输出为字符串:

var words = {<?php echo '"'.implode('","', $wordsArray).'"' ?>};
$.each(words, function(key, value) {
    console.log('stuff : ' + key + ", " + value);
});
Run Code Online (Sandbox Code Playgroud)

哪个抛出错误: SyntaxError: Unexpected token ,

Roh*_*mar 43

您可以使用json_encode() ,使array作为json object像,

var words = <?php echo json_encode($wordsArray) ?>;// don't use quotes
$.each(words, function(key, value) {
    console.log('stuff : ' + key + ", " + value);
});
Run Code Online (Sandbox Code Playgroud)


小智 7

对我来说,将 php 数组转换为 javascript 对象的最简单方法是对 php 数组进行 json_encode,然后从 javascript 进行 JSON.parse,如下所示:

<?php 
    $array = [1 => "one", 2 => "two", 3 => "three"];
?>

<script>
    const jsObject = JSON.parse(`<?= json_encode($array) ?>`)
    console.log(jsObject) // Object { 1: "one", 2: "two", 3: "three" }
</script>
Run Code Online (Sandbox Code Playgroud)