如果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改为数组了。
不要同时使用索引数组和键值对数组。