从 std 对象中回显 json 以获取更多值

Posted

技术标签:

【中文标题】从 std 对象中回显 json 以获取更多值【英文标题】:echo json for more values from std object 【发布时间】:2015-07-24 22:58:32 【问题描述】:

我有下面的代码检查表的值是否为 NULL,然后回显消息以查看以告诉用户该值已经存在,

在此代码中,采用多选输入,然后在 mysql 数据库中检查所选 id,如果该 id 具有值,则代码将向用户发送错误消息,如果值为 NULL,则将继续执行进一步的操作,例如添加.

foreach($this->input->post('sla_department') as $department_id)
        
            $departmentslacheck = $this->model_admin->checkdepartmentsla($department_id);

            if($departmentslacheck->sla_id !==  NULL)
            
                echo json_encode(array('cival'=>0, 'val_message' => 'SLA already assigned to '.$departmentslacheck->department_name));

                               
        

我的问题是,当用户在 html 视图中选择 2 个或多个值并且都在数据库表中具有值(意味着不为 NULL)时,它会发送 2 个视图不期望的 JSON,所以我看不到错误消息,

有了这个,我得到如下 JSON,

0: cival: 0, val_message: "SLA already assigned to X"
1: cival: 0, val_message: "SLA already assigned to Y"

我该如何回应...

cival'=>0, 'val_message' => 'SLA already assigned to X , Y.

其中 X 和 Y 是数据库部门名称

【问题讨论】:

【参考方案1】:

在开始 foreach 循环之前初始化一个数组, 将数组 insde de 循环推送到该数组并回显一个唯一的 主数组的json_encode:

 $result = array();
foreach($this->input->post('sla_department') as $department_id)
    
        $departmentslacheck = $this->model_admin->checkdepartmentsla($department_id);

        if($departmentslacheck->sla_id !==  NULL)
        
           $result[]=array('cival'=>0, 'val_message' => 'SLA already assigned to '.$departmentslacheck->department_name);

                           
    
echo json_encode($result);

【讨论】:

这不会产生预期的结果。【参考方案2】:

不要在条件下立即回显 JSON,而是编译最终结果然后发送。

$result = [];
foreach($this->input->post('sla_department') as $department_id)

        $departmentslacheck = $this->model_admin->checkdepartmentsla($department_id);

        if($departmentslacheck->sla_id !==  NULL)
        
            $result[] = $departmentslacheck->department_name;

                           


if (count($result) > 0)

    echo json_encode(array('cival'=>0, 'val_message' => 'SLA already assigned to '.implode(', ', $result)));

【讨论】:

以上是关于从 std 对象中回显 json 以获取更多值的主要内容,如果未能解决你的问题,请参考以下文章

如何在laravel刀片中从json解码中回显键名和键值

如何使用 php 在 WordPress 插件中回显 json 数据 [重复]

从 Angular 范围的 php 文件中获取 json 数据

使用单个查询从相关数据库表中回显嵌套的 JSON 数组?

从git pull和git fetch到txt文件中回显git消息/输出

在 WordPress 中回显父页面的副标题?