この記事では、PHP のカスタム再帰関数を使用して配列を JSON に変換する関数を実装する方法を共有します。内容は非常に優れています。困っている友人は参照できます。すべての人に役立つことを願っています。
この記事の例では、配列を JSON 関数に実装するための PHP カスタム再帰関数について説明します。参考までに皆さんと共有してください。詳細は次のとおりです。
質問:
他社にインターフェースを提供する必要があるため最近のプロジェクトでは、GBK でエンコードされた json データをフィードしましたが、問題の 1 つは、PHP の json_encode
暗号化関数が utf-8 エンコードのみをサポートしていることです。これはさらに恥ずかしいことです。データは GBK エンコードされており、受信側が必要とするデータ形式も GBK エンコードされているため、最初は utf-8 エンコードに変換してから json_encode
関数を使用することを考えていました。これにより、中国語のコンテンツが文字化けしたため、最終的な方法はデータを手動で暗号化することでした。
実装:
この機能を実現するには、json データの特徴を観察することが最も重要です。概要が適切に設定されておらず、完全に完了できませんでした。 json_encode
関数の機能を実装するには、後でインターネット上の情報を参照してこの関数を実装します (再帰関数です):
function newArrayToJson($array) { if(!is_array($array)) { return ''; } $func = __FUNCTION__; //关键判断是不是关联数组,以此来决定是否需要json加密key和使用[] $associative = (array_keys($array) !== range(0, count($array) - 1)) ? true : false; if($associative && !empty($array)) { $construct = array(); foreach($array as $key => $value) { $key = '"'.$key.'"'; if(is_array($value)) { $value = $func($value); } elseif(!is_numeric($value)) { $value = '"'.$value.'"'; } $construct[] = "$key:$value"; } $result = "{".implode(",",$construct)."}"; } else { $construct = array(); foreach($array as $value) { if(is_array($value)) { $value = $func($value); } else if(!is_numeric($value)) { $value = '"'.$value.'"'; } $construct[] = $value; } $result = "[".implode(",", $construct)."]"; } return $result; }
//测试: $arr=array('1'=>'www.jb51.net','2'=>'www.baidu.com','3'=>'www.sina.com.cn','4'=>'脚本之家'); echo newArrayToJson($arr); /* 运行结果: {"1":"www.jb51.net","2":"www.baidu.com","3":"www.sina.com.cn","4":"脚本之家"} */
#PHP でよく使用される 10 個の文字列関数の紹介と使用方法
以上がPHP カスタム再帰関数を実装して配列を JSON に変換する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。