【问题标题】:How to make an if else condition within a while loop in php?如何在 php 的 while 循环中创建 if else 条件?
【发布时间】:2015-02-02 11:51:34
【问题描述】:

我想做一个如下所示的数组:

qqq = [[a,b],[c,d]];

但是使用我得到的代码,它会产生如下所示的输出:

qqq= [[a,b],[c,d],];

我应该怎么做才能排除多余的分号?

var qqq = [<?php 
        $aw = "select * from city;";
        $wa = mysql_query($aw);

    while($aa = mysql_fetch_array($wa))
        {       
            $cc = $aa['Coordinate_id'];
            $bb = $aa['city_name'];

            echo "[$cc,$bb],";

        }   
?> ];

【问题讨论】:

  • 强制请使用 PDO 或 mysqli 函数,因为 mysql 函数已被贬低

标签: javascript php mysql loops if-statement


【解决方案1】:

由于你要的是一个 JSON 编码的数组,所以请使用下面的 sn-p 来实现完全一样的:

var qqq = <?php 
    $aw = "select * from city;";
    $wa = mysql_query($get_marker);

    $arr = array();
    while($aa = mysql_fetch_array($wa)) {
        $arr[] = array($aa['Coordinate_id'], $aa['city_name']);
    }
    echo json_encode($arr);
?>;

【讨论】:

  • 使用 PDO 或 mysqli 的 _fetchAll() 函数,您甚至可以省略循环。
  • @GeraldSchneider 是的...因此对使用 PDO 或 mysqli 的问题的评论 =)
  • 它只输出最后一个数据:(
  • @vamkodz 小编码错误...用正确的答案更新了答案 =)
【解决方案2】:

替换这个:

while($aa = mysql_fetch_array($wa))
{
    $cc = $aa['Coordinate_id'];
    $bb = $aa['city_name'];
    echo "[$cc,$bb],";
}

到这里:

$result = '';
while($aa = mysql_fetch_array($wa))
{
    $cc = $aa['Coordinate_id'];
    $bb = $aa['city_name'];
    result.="[$cc,$bb],";
} 
echo trim($result,',');

【讨论】:

  • 你的意思是它不起作用?您可以发布此更改后的错误吗?
【解决方案3】:

你应该像这样使用 implode 而不是 echo

<?php 
$aw = "select * from city;";
$wa = mysql_query($get_marker);
$arr = [];
while($aa = mysql_fetch_array($wa))
{       
    $cc = $aa['Coordinate_id'];
    $bb = $aa['city_name'];

    $arr[] = "[$cc,$bb]";
}   
?>

var qqq = [<?php echo implode(',',$arr)?>];

我认为这也提高了可读性,并且更容易移植到更易于管理的东西上

【讨论】:

  • 不输出任何东西 :(
【解决方案4】:

计算行数:

$num = mysql_num_rows($aw);

并使用计数器检查条件是否适用于最后一个循环正在发生:

$i = 0;
while($aa = mysql_fetch_array($wa))
{       
    $cc = $aa['Coordinate_id'];
    $bb = $aa['city_name'];

    if ($i < $num)
    {
        echo "[$cc,$bb],";
    }
    else
    {
        echo "[$cc,$bb]";
    }
    $i++;
}   

最后,请注意 mysql_* 函数已被弃用,应避免使用。请改用 PDO 或 mysqli。

【讨论】:

  • @vamkodz 你能证明发生了什么吗?
【解决方案5】:

使用数组代替 echo 并在 while 循环外内爆

var qqq = [<?php 
    $aw = "select * from city;";
    $wa = mysql_query($get_marker);

$ret = array();

while($aa = mysql_fetch_array($wa))
{       
    $cc = $aa['Coordinate_id'];
    $bb = $aa['city_name'];

    $ret[] = "[$cc,$bb]";

}   

echo implode(',', $ret);
?> ];

【讨论】:

    猜你喜欢
    • 2020-08-14
    • 2014-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-08-28
    • 2023-03-22
    • 2014-06-26
    • 2014-07-01
    • 2014-01-21
    相关资源
    最近更新 更多