![](/img/trans.png)
[英]Javascript: sort Array of objects by external map (or external K.V pairs)
[英]Load database values as k:v pairs into PHP, and then into JavaScript array
我正在尝试将中文单词作为键,并将它们的英文翻译作为值从数据库加载到php数组中,以便随后可以在JavaScript的客户端上使用它们。 因此,我将PHP key:value对加载到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
作为每个值的键,这是错误的:
Ni: You
Ni: Him or Her
Ni: I
但是,var_dump提供了正确的key:value
配对:
array (size=3)
'Ni' => string 'You' (length=3)
'Ta' => string 'Him or Her' (length=10)
'Wo' => string 'I' (length=1)
JavaScript的:
var words = [<?php echo '"'.implode('","', $wordsArray).'"' ?>];
$.each(words, function(key, value) {
console.log('stuff : ' + key + ", " + value);
});
Console.log提供键的数字,而不是中文键:
stuff : 0, You
stuff : 1, Him or Her
stuff : 2, I
问题:如果php
dump显示正确的键对(中文单词)与值(英文单词)配对,为什么我得到了不同的输出?
implode()
没有打印$wordsArray
的键,这就是为什么var words
没有正确键的原因。
您真正想要实现的是使用Javascript语法的PHP数组的字符串表示形式。 可以为您完成此任务的函数是json_encode()
<?php echo "var words = ". json_encode($wordsArray) . ";";?>
此处提供更多信息: http : //au2.php.net/json_encode
这行不起作用的原因:
echo "<br>".key($wordsArray) . ":" . $wordsArray[$row['chinese']];
是因为key()
函数不会移动数组指针,因此您会重复相同的数组键。
也许您可以尝试一下?
var words =
[<?php $result = [];
foreach($wordsArray as $key=>$value){
$result[] = '"'.$key.'":"'.$value.'"';
}
echo implode(',', $result)
?>]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.