PHP Foreach - 不同的最后一行

时间:2012-09-26 06:30:25

标签: php

我正在使用foreach语句将我的数据回显到jquery图表(flotchart)。表单必须为{"label", data}, {"label", data}, {"label", data}

但是我的foreach语句在每一行之后都添加了一个逗号,包括最后一行,我没有逗号,因为它破坏了脚本。

我目前正在使用

foreach ($bycountry as $country) {print 
'{ label: "' . $country['origincountry'] . '", data: ' . $country['countrytotal']. ' }, ';
}

这给了我:{"label", data}, {"label", data}, {"label", data},

我在最后一行不需要逗号

6 个答案:

答案 0 :(得分:4)

你试过json_encode吗?

$country_to_json = array(
    array('label'=>'Portugal', 'data'=>12), 
    array('label'=>'india', 'data'=>13) 
);

echo json_encode($country_to_json);

您需要稍微重新组织一下数组,但这是一种更清晰的方法。

另一种方法是使用implode,但无论如何你都需要重新组织你的数组:

$country_for_implode = array();
foreach($bycountry as $country){
   $country_for_implode[] = "{ label: {$country['origincountry']}, data: {$country['countrytotal']}}";
}

echo implode(",", $country_for_implode);

答案 1 :(得分:1)

您可以使用substr

$str = '';  
foreach ($bycountry as $country) {
$str .= '{ label: "' . $country['origincountry'] . '", data: ' . $country['countrytotal'].     ' }, ';
}
echo $str = substr($str, 0, strlen($str)-1);

希望这有帮助!

答案 2 :(得分:1)

只使用这个

$temp = array();
foreach ($bycountry as $country) 
{
    $temp[] = '{ label: "' . $country['origincountry'] . '", data: ' . country['countrytotal']. ' } ';
}
print implode(",", $temp);

答案 3 :(得分:1)

$no = 1;
foreach ($bycountry as $country) {
    if($no== 1)
    {
        print  '{ label: "' . $country['origincountry'] . '", data: ' . $country['countrytotal']. ' } ';
        $no ++;
    }
    else
    {
        print  ',{ label: "' . $country['origincountry'] . '", data: ' . $country['countrytotal']. ' } ';
    }
}

希望这会有所帮助。

答案 4 :(得分:0)

像这样使用

foreach ($bycountry as $country) {
$str .= '{ label: "' . $country['origincountry'] . '", data: ' . $country['countrytotal']. ' }, ';
}

$str = trim($str,",");
print $str;

这将删除上一个,

答案 5 :(得分:0)

使用你的数组你可以得到最后一个关键字:

// Extract the last array item and return it's key value
$last_key = key(array_slice($bycountry, -1, 1, TRUE));

$out = '';

foreach ($bycountry as $key => $country)
{
    $out .= '{ label: "' . $country['origincountry'] . '", data: ' . $country['countrytotal']. ' }';

    // If this is not the last key
    if ($key !== $last_key)
    {
        // Add the trailing comma
        $out .= ',';
    }
}

print ($out);