需要从以下代码格式化输出

时间:2011-03-28 07:22:13

标签: php mysql

我需要从以下php mysql代码中获取一个数组输出[[1, 26], [3, 16], [3, 17], [4, 27], [4, 26]]

    include("db.php");

$villa = $_GET['villa'];

$sql = mysql_query("SELECT unavailable_date_from, unavailable_date_to FROM villa WHERE name = '".$villa."'");
$json = "[";
    while($results = mysql_fetch_object($sql)){

        foreach ($results as $field => $value) {
            $a = explode("-", $value);

            $json = $json . '[' . $a[1] .','. $a[2] .'],';
        }

        $json = substr($json, 0, strlen($json)-1);

    }

$json = $json . ']';

echo $json;

当前代码给出以下结果:[[03,08],[03,10][03,15],[03,20]]

有人可以告诉我如何在第二个和第三个数组元素之间添加一个逗号

由于

3 个答案:

答案 0 :(得分:3)

$json = substr($json, 0, strlen($json)-1);移至$json = $json . ']';之前的行。

看起来像:

if ($json != '[') $json = substr($json, 0, strlen($json)-1);
$json = $json . ']';

有点乱,但它会起作用。编辑:使用rtrim会更好:

$json = rtrim($json, ',');
$json = $json . ']';

这是完整的代码:

$json = '';
while($results = mysql_fetch_object($sql)) {
    foreach ($results as $field => $value) {
        $a = explode("-", $value);
        $json .= '[' . $a[1] .','. $a[2] .'],';
    }
}

$json = '[' . rtrim($json,','). ']';

答案 1 :(得分:0)

例如添加:

$json = str_replace('][', '],[', $json);

在最后一个回声线之前。

答案 2 :(得分:0)

$json = substr($json, 0, strlen($json)-1);应该在循环结束之后和']'添加之前。

    include("db.php");

$villa = $_GET['villa'];

$sql = mysql_query("SELECT unavailable_date_from, unavailable_date_to FROM villa WHERE name = '".$villa."'");
$json = "[";
    while($results = mysql_fetch_object($sql)){
         foreach ($results as $field => $value) {
            $a = explode("-", $value);
             $json = $json . '[' . $a[1] .','. $a[2] .'],';
        }
     }
if (len($json) > 1) $json = substr($json, 0, strlen($json)-1);
$json = $json . ']';
echo $json;