首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将数据库值以k:v对的形式加载到PHP中,然后加载到JavaScript数组中

问将数据库值以k:v对的形式加载到PHP中,然后加载到JavaScript数组中
EN

Stack Overflow用户
提问于 2014-01-16 04:47:59
回答 2查看 144关注 0票数 1

我试图将中文单词作为键加载,并将它们的英文翻译为从数据库中的值加载到php数组中,这样我就可以在JavaScript的客户端使用它们。因此,我将PHP :value对加载到JavaScript数组中,并尝试输出结果。

数据库设置:

​

​

代码语言:javascript
复制
    include 'php/DbConnect.php';
    $sql = $mysqli->query(
     "SELECT t.*, v.* 
     FROM task t 
     INNER JOIN vocabtask vt ON (t.id = vt.taskid)
     INNER JOIN vocab v ON (v.id = vt.vocabid)
     WHERE vt.taskid = 1");
    $wordsArray = array();

    while ($row = $sql->fetch_assoc()) {
        $wordsArray[$row['chinese']] = $row['english'];
        //echo key : value pair
        echo "<br>".key($wordsArray) . ":" . $wordsArray[$row['chinese']];
    }
    var_dump($wordsArray);
    mysqli_close($mysqli);  

回声输出将Ni作为每个值的关键,这是错误的:

代码语言:javascript
复制
Ni: You
Ni: Him or Her
Ni: I

然而,var_dump给出了正确的key:value配对:

代码语言:javascript
复制
array (size=3)
  'Ni' => string 'You' (length=3)
  'Ta' => string 'Him or Her' (length=10)
  'Wo' => string 'I' (length=1)

JavaScript:

代码语言:javascript
复制
    var words = [<?php echo '"'.implode('","', $wordsArray).'"' ?>];

    $.each(words, function(key, value) {
        console.log('stuff : ' + key + ", " + value);
    }); 

Console.log给出了键的数字,而不是中文键:

代码语言:javascript
复制
stuff : 0, You 
stuff : 1, Him or Her
stuff : 2, I

问:如果php转储显示了将关键字(中文单词)与值(英文单词)适当的配对,为什么我要得到不同的输出?

EN

回答 2

Stack Overflow用户

发布于 2014-01-16 05:16:37

implode()没有打印$wordsArray的键,这就是为什么var words没有正确的键。

这里您真正想要实现的是一个带有Javascript语法的PHP数组的字符串表示。将为您执行此操作的函数是json_encode()。

代码语言:javascript
复制
<?php echo "var words = ". json_encode($wordsArray) . ";";?>

更多信息在这里:encode

这句话不能用的原因是:

代码语言:javascript
复制
echo "<br>".key($wordsArray) . ":" . $wordsArray[$row['chinese']];

因为key()函数没有移动数组指针,因此您将得到相同数组键的重复。

票数 1
EN

Stack Overflow用户

发布于 2014-01-16 05:32:57

也许你能试试这个?

代码语言:javascript
复制
var words = 
[<?php $result = [];
foreach($wordsArray as $key=>$value){
   $result[] = '"'.$key.'":"'.$value.'"';
}
echo implode(',', $result)
?>]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21153520

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档