我正在尝试基于2个不同的代码创建一个词云。一个返回一个数组,其中包含每个单词的单词和权重,而第二个单元接收该数组并创建单词云。但是,我不知道如何将php数组转换为javascript数组。
php数组代码:
<?php
$arr = *data from database*;
$string = implode(",", $arr);
error_reporting(~E_ALL);
$count=0;
//considering line-return,line-feed,white space,comma,ampersand,tab,etc... as word separator
$tok = strtok($string, " \t,;.\'\"!&-`\n\r");
if(strlen($tok)>0) $tok=strtolower($tok);
$words=array();
$words[$tok]=1;
while ($tok !== false) {
//echo "Word=$tok<br />";
$tok = strtok(" \t,;.\'\"!&-`\n\r");
if(strlen($tok)>0) {
$tok=strtolower($tok);
if($words[$tok]>=1){
$words[$tok]=$words[$tok] + 1;
} else {
$words[$tok]=1;
}
}
}
当回显时返回一个这样的数组。 数组([checking] =&gt; 1)
虽然javascript以这种形式接收数组:
var word_list = [
{text: "Lorem", weight: 15},
{text: "Ipsum", weight: 9, url: "http://jquery.com/", title: "I can haz URL"},
{text: "Dolor", weight: 6},
{text: "Sit", weight: 7},
{text: "Amet", weight: 5}
// ...other words
];
如何将php数组循环替换为文本和权重变量?
任何帮助将不胜感激。如果您需要创建php数组的代码,请告诉我。
答案 0 :(得分:1)
这应该这样做(放在当前代码之后):
$cloud = Array();
foreach ($words as $text => $weight) {
$cloud[] = Array('text' => $text, 'weight' => $weight);
}
echo json_encode($cloud);
它没有说明你给定的JS样本中url
,title
等的可能性,但我认为这就是你所追求的。这是一个演示:http://codepad.org/OnEDIe1l
当然,您可以调整构建$words
数组的PHP来构建它,使其与我的代码在$cloud
中生成的内容相匹配。但也许您需要使用$words
做其他事情...(我可以看到在使用您当前的代码进行标记化期间如何更容易维护计数。)
答案 1 :(得分:0)