繁体   English   中英

PHP Array无法使用JSON正确格式化

[英]PHP Array not formatting correctly with JSON

我已经生成了一个函数,该函数将遍历数据库表中的记录并将它们转换为数组以供进一步使用

public function cycleCount()
{
    global $db;

    $selectProducts = $db->query("SELECT * FROM stockroom_products");

    $results = array("catA", "catB", "catC");

    while($row = $db->assoc($selectProducts))
    {
        if($row['Product_PRICE'] >= 10)
        {
            array_push($results, "catA", $row['ID']);
        }
        else if ($row['Product_PRICE'] >= 5 AND $row['Product_PRICE'] < 10) 
        {
            array_push($results, "catB", $row['ID']);
        }
        else if ($row['Product_PRICE'] > 0 AND $row['Product_PRICE'] < 5)
        {
            array_push($results, "catC", $row['ID']);
        }


        $json_data = json_encode($results);
        //echo $json_data;

        echo $json_data;

    }

}

而且我似乎无法弄清楚如何使数组像

[catC[ID1, ID2, ID3]], [catB[ID1, ID2, ID3]], [catA[ID1, ID2, ID3]]

目前它这样做

["catA","catB","catC","catB","1"]["catA","catB","catC","catB","1","catC","2"]["catA","catB","catC","catB","1","catC","2","catC","3"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13","catA","14"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13","catA","14","catA","16"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13","catA","14","catA","16","catB","17"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13","catA","14","catA","16","catB","17","catA","18"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13","catA","14","catA","16","catB","17","catA","18","catA","19"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13","catA","14","catA","16","catB","17","catA","18","catA","19","catB","20"]["catA","catB","catC","catB","1","catC","2","catC","3","catC","4","catA","5","catC","6","catC","9","catA","10","catC","11","catC","12","catC","13","catA","14","catA","16","catB","17","catA","18","catA","19","catB","20","catB","21"]

您正在将值推送到无效的字符串。

尝试像这样定义结果数组: $result = array("catA" => array(), "catB" => array(), "catC" => array());

这应该使您嵌套数组,从而得到您想要的结果。 也可以使用array_push($result['catA'], $row['ID']); 而不是array_push($reuslt, 'catA', $row[ID'])

正如@u_mulder正确指出的那样,应在while循环后回显json!

根据文档, array_push不会将其作为第二个参数: http : //php.net/manual/de/function.array-push.php

您应该改为这样:

$results = array("catA" => [], "catB" => [], "catC" => []);
if($row['Product_PRICE'] >= 10)
{
    $results["catA"][] = $row['ID'];
}
else if ($row['Product_PRICE'] >= 5 AND $row['Product_PRICE'] < 10) 
{
    $results["catB"][] = $row['ID'];
}
else if ($row['Product_PRICE'] > 0 AND $row['Product_PRICE'] < 5)
{
    $results["catC"][] = $row['ID'];
}

那对你有用吗?

试试吧

      piblic  function cycleCount(){
    global $db;

    $selectProducts = $db->query("SELECT * FROM stockroom_products");
    $catA =array();
    $catB =array();
    $catC =array();
    $results = array();

    while($row = $db->assoc($selectProducts))
    {
        if($row['Product_PRICE'] >= 10)
        {
             array_push($catA,array('catA' =>$row['ID']));
        }
        else if ($row['Product_PRICE'] >= 5 AND $row['Product_PRICE'] < 10) 
        {
            array_push($catB,array('catB' =>$row['ID']));

        }
        else if ($row['Product_PRICE'] > 0 AND $row['Product_PRICE'] < 5)
        {

            array_push($catC,array('catC' =>$row['ID']));

        }


        $json_data = json_encode($results);
        //echo $json_data;

        echo $json_data;

    }
    $results=array($catA,$catB,$catC);
    print_r($results);
}
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM