我正在尝试使用php生成一组"{URL.callback}“,以便在javascript中使用。通过使用数据库。下面是我的代码:
$sql="select * from search where keywords LIKE '$bb%' ORDER BY keywords ";
$result=mysql_db_query($dbname,$sql);
echo $_GET["callback"] . "({ t:\"$t\", r:[";
while ( $rs=mysql_fetch_array($result)) {
$keywords=$rs[keywords];
echo "" ."\"$keywords\"".","." ";
}
echo"] })";下面是它返回的代码:
({ t:"", r:["example1", "example2", "example3",] })似乎所有的东西都是正确的,除了我想要去掉的结尾(,)(在“example3”之后)。因为它是不正确的,不能和它一起使用。
问题是:如何正确地生成它?如何去掉最后一个(,)?
发布于 2011-12-19 03:35:11
解决方案
在PHP中创建数据结构(多维数组),让json_encode()生成JS数据结构。
示例
它可能看起来像这样:
$sql="select * from search where keywords LIKE '$bb%' ORDER BY keywords ";
$result=mysql_db_query($dbname,$sql);
$data = array(
't' => $t,
'r' => array(),
);
while ( $rs=mysql_fetch_array($result)) {
$data['r'][] = $rs['keywords'];
};然后像这样显示它:
echo $_GET["callback"].'('.json_encode($data).');';发布于 2011-12-19 03:33:40
不是自己生成JSON,而是使用json_encode为您完成繁重的工作。
$keywords = array ();
while ( $rs=mysql_fetch_array($result)) {
$keywords[] = $rs['keywords'];
}
echo json_encode ($keywords);首选解决方案
但是,如果您计划使用json_encode,请将$keywords附加到其他数据集,并在整个结构上使用json_encode。
$json_data = array (
't' => '',
'r' => array ()
);
while ( $rs=mysql_fetch_array($result)) {
$json_data['r'][] = $rs['keywords'];
}
echo "(".json_encode ($json_data).")";如果你想自己做这件事,有一些(相当干净的)选项可用,请看下面的代码片段。
将所有检索到的关键字附加到一个数组中,并在while循环$keyword_array = join ()之后使用以',‘为分隔符的数组来形成一个字符串;
while ($rs=mysql_fetch_array($result)) {
$keywords=$rs[keywords];
$keyword_array = "\"$keywords\"";
}
echo join (', ', $keywords);在while循环之前使用mysql_num_rows来获取$result中的行数,并且在处理最后一个元素时不要附加,。
$n_rows = mysql_num_rows ($result);
for ($i =1; $rs = mysql_fetch_array ($result); ++$i) {
$keywords=$rs[keywords];
echo "\"$keywords\"";
if ($i != $n_rows)
echo ", ";
}发布于 2011-12-19 03:34:09
试试这个:
$output = '';
while ( $rs=mysql_fetch_array($result)) {
$keywords=$rs[keywords];
$output .= "" ."\"$keywords\"".","." ";
}
$output = substr($output, 0, -2);
echo $output;https://stackoverflow.com/questions/8554202
复制相似问题