導致Android/IOS崩潰的null----PHP和Android/IOS數據交互

如果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改爲數組了。

不要同時使用索引數組和鍵值對數組。








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章