我在php中有问题。 所以,我有一个json数据,我将解码并放入对象 然后,我将使用foreach函数获取参数。 我将它放到一个数组中,所以我可以在循环之外调用它。 但是,当我显示结果时,它会返回一个额外的空值,如下所示:
[{"mobile":"639179512744"},{"mobile":"639054971214"}, {"mobile":"639394297841"},{"mobile":"639296378818"},{"mobile":"639265161309"},{"mobile":null}]
不应包括最后一条记录。我只有5条手机记录。
这是我的代码:
$data = file_get_contents("php://input");
$data = (object)json_decode($data);
$model = $data->data;
$model = json_encode($model);
$model = json_decode($model);
$model = (object)$model;
foreach($model AS $row){
$mobile = $row->mobile_number;
$array[] = array(
'mobile'=>$mobile
);
}
echo json_encode($array);
以下是数据:
{"action":"upload","data":[{"mobile_number":"639179512744","sentdt":"2017- 02-07 00:21:57","imsi":"","remarks":"ACTIVE"}, {"mobile_number":"639054971214","sentdt":"2017-02-07 00:21:57","imsi":"","remarks":"ACTIVE"}, {"mobile_number":"639394297841","sentdt":"2017-02-07 00:21:57","imsi":"","remarks":"Absent Subscriber - No International Mobile Subscriber Identity"},{"mobile_number":"639296378818","sentdt":"2017-02-07 00:21:58","imsi":"","remarks":"Absent Subscriber - No International Mobile Subscriber Identity"},{"mobile_number":"639265161309","sentdt":"2017-02-07 00:21:58","imsi":"","remarks":"ACTIVE"},{}]}
有人可以提供帮助吗?我想摆脱额外的空值 感谢
答案 0 :(得分:2)
您可以尝试进行空检查,如下所示:
foreach($model as $row){
if (!is_null($row->mobile_number)) {
$array[] = array(
'mobile'=> $row->mobile_number;
);
}
}
另请注意,没有理由将$ row-> mobile_number缓存到变量中,只需将其直接传递给数组。
答案 1 :(得分:1)
这将解决您的问题。
foreach($model AS $row){
$mobile = $row->mobile_number;
if(!empty($mobile) && isset($mobile)){
$array[] = array(
'mobile'=>$mobile
);
}
}
答案 2 :(得分:0)
您的数据结尾是:
...ACTIVE"},{}]}
当数据被解码时,最后一个数组值是空对象,这意味着数组值的最后一个不具有mobile_number
的成员变量,因此执行$row->mobile_number;
可以获得null
的值,和PHP错误报告将同时报告E_NOTICE
错误。
您可以使用函数is_null()
来过滤空值,但您应该同时检查数据源。