0

我一直在寻找并试图找到一种使用 php 以智能方式处理数据的方法。

例子:{"number":"test","first_name":"test","last_name":"test","company":"tes123321D323","call_result":"test","call_duration":"500","comment":"test"}

我有这个 json 字符串,我想从中获取数据并在表中回显它。用户可以配置从 json 中获取的数据。因此,假设用户只想显示哪些公司已致电的总和。

每次我以不同的方式处理数据时,我都可以创建一个函数,但我希望我的代码简短并且它​​应该适应它获得的字符串/参数类型。

在我对它进行 json 解码后,我应该如何显示这些数据?使用 1 个函数多次显示对象的最佳方法是什么

代码

$component_data[0] 是一个带有多个 json 字符串的 mysql 查询。

    if($component_data[0]->datatype !== "text"){
        foreach($component_data as $val){
            $isJira = ($val->datatype == "jirajson") ? true : false;

            $comp_objarr[] = json_decode(trim($val->data));
        }

        if($isJira){
            foreach($comp_objarr as $object){
                $comp_objarrnew[$object->_displayName][] = $object;
            }
        }else{
            $comp_objarrnew[] = $comp_objarr;
        }

        $uid = 0;
        if(isset($_GET['uid'])){
            $uid = $_GET['uid'];
        }

        $var = "";
        $i = 0;
        $i2 = 0;
        echo "<table>";
        foreach($comp_objarrnew as $key => $object){
            if($isJira){
                if($i == $uid){
                    usort($comp_objarr, 'cmp');
                    echo "<tr><th colspan=\"7\">$key</th></tr>";
                    echo "<tr>";
                    foreach($object as $value){
                        $var .= "<tr>";
                        foreach($value as $key => $item){
                            if($i2 == 0){
                                echo "<th>$key</th>";
                            }
                            $var .= "<td>".$item."</th>";
                        }
                        $i2++;
                        if($i2 > 0){
                            echo "</tr>";
                        }
                        $var .= "</tr>";
                    }
                }
                $i++;
            }else{
                foreach($object as $value){
                    if($i == 0){
                        $var .= "<tr>";
                        foreach($value as $key => $item){
                            $var .= "<th>".$key."</th>";
                        }
                        $var .= "</tr>";
                        $i++;
                    }

                    $var .= "<tr>";
                    foreach($value as $item){
                        $var .= "<td>".$item."</td>";
                    }
                    $var .= "</tr>";
                }
            }
        }
        echo $var;
        echo "</table>";
    }else{
        $i = 0;
        $var = "";

        echo "<table>";
        foreach($component_data as $val){
            if($i == 0){
                echo "<tr>";
            }

            $var .= "<tr>";
            foreach($val as $key => $info){
                if($i == 0){
                    echo "<th>$key</th>";
                }
                $var .= "<td>$info</td>";
            }
            $i++;
            $var .= "</tr>";
        }
        echo $var;
        echo "</table>";
    }
}

这是它当前的显示方式

这是用户可以添加的显示之一:

比如每天对数据进行分组。

用户可以添加无限数量的显示器。如只显示公司名称分组按公司名称计数等。

如果我希望它轻松显示其他内容,我应该如何编辑我的代码?无需创建大量 if 语句。

4

2 回答 2

0

弄清楚了。

我使用了一个数据库,并为每个 json 字符串定义了如何显示它的设置:

宽度高度长度按分组排序。

然后在我的课堂上,我创建了一个函数来迭代设置并检查如何显示数据。

于 2014-09-17T09:20:53.020 回答
-1

如果你想从 json 编码格式中获取数据,那么你应该使用 json_decode() 函数。这个函数将解码所有数据并返回数组。之后你可以在任何地方使用这个数组。所以使用这个函数

  Ex. $arr =array();
  $arr = json_decode($var); // decode the string variable and store it into the array
于 2014-09-11T11:29:57.967 回答