如果Android或者IOS收到了null这种下发字段,会崩溃!!!这是最不能忍的,而我们的数据库由于刚开始的时候没有做好处理,导致很多时候会下发null,因此代码中经常会出现这样的临时修改方案:
$ret[‘description‘] = $v[‘description‘] ? $v[‘description‘] : ‘‘; $ret[‘title‘] = $brind_name ? $brind_name : ‘‘; $ret[‘brand_id‘]= $v[‘brand_id‘] ? $v[‘brand_id‘] : ‘‘; $ret[‘series_id‘] = $v[‘series_id‘] ? $v[‘series_id‘] : ‘‘; $ret[‘model_id‘] =$v[‘model_id‘] ? $v[‘model_id‘] : ‘‘; $ret[‘customer_id‘] = $v[‘customer_id‘] ? $v[‘customer_id‘] : ‘‘; $ret[‘car_color‘] = $v[‘car_color‘] ? $v[‘car_color‘] : ‘‘; $ret[‘car_number‘] = $v[‘car_number‘] ? $v[‘car_number‘] : ‘‘; $ret[‘ad_note‘] = $v[‘ad_note‘] ? $v[‘ad_note‘] : ‘‘; $ret[‘transfer_num‘] = $v[‘transfer_num‘] ? $v[‘transfer_num‘] : ‘‘; $ret[‘maintain_address‘] = $v[‘maintain_address‘] ? $v[‘maintain_address‘] : ‘‘; $ret[‘year_check_time‘] = date(‘Y-m-d‘, $v[‘year_check_time‘]) ? date(‘Y-m-d‘, $v[‘year_check_time‘]) : ‘‘; $ret[‘card_time‘] = date(‘Y-m-d‘, $v[‘card_time‘]) ? date(‘Y-m-d‘, $v[‘card_time‘]) : ‘‘; $ret[‘update_time‘] = date(‘Y-m-d H:i:s‘, $v[‘update_time‘]) ? date(‘Y-m-d H:i:s‘, $v[‘update_time‘]) : ‘‘; $ret[‘telephone‘] =$ret[‘mobile‘] ? $ret[‘mobile‘] : ‘‘; $ret[‘status‘] = $v[‘status‘] ? $v[‘status‘] : 0; $ret[‘sale_status‘] = $v[‘sale_status‘] ? $v[‘sale_status‘] : 0;
看到了么?每个返回的参数去判断是否为空。。这不是坑爹么?这种东东肯定是用一个函数搞定啊!!经过仔细测试,用了个递归函数处理所有的输出:
/** * @biref将数组或者字符串中的null转化成‘‘ * @param array $vars * @return array $retsult * @author water * @example */ public static function changeNull($vars,$from=null,$to=‘‘) { if (is_array($vars)) { $result = array(); foreach ($vars as $key => $value) { $result[$key] = self::changeNull($value,$from,$to); } } else { $result = ($vars === null || strtolower($vars) == ‘null‘) ? ‘‘ : $vars; } return $result; }
很早以前就发现PHP和Android/IOS数据交互的时候会有很多应该注意的地方:
交互的时候用的数据格式:JSON
PHP是弱语言类型:如果是个索引数组,到了客户端(IOS/Android)那边还是数组,如果是个键值对类型的数组,到了客户端就成了对象。
当然PHP这边很好解决:直接使用json_decode();
$person = json_decode(‘{"name":"water","age":24}‘, true);
这样就把所有的json改为数组了。
不要同时使用索引数组和键值对数组。