从 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 以获取更多值的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 php 在 WordPress 插件中回显 json 数据 [重复]
从 Angular 范围的 php 文件中获取 json 数据