PHP では、データの処理は頻繁に実行する必要がある操作です。特に Web 開発では、クライアントまたは外部インターフェイスからデータを取得し、そのデータを処理または保存する必要がよくあります。場合によっては、UTF-8 エンコードを GB2312 エンコードに変換したり、ISO-8859-1 エンコードを UTF-8 エンコードに変換したりするなど、配列エンコードを変換する必要があります。この記事では、PHP で配列のトランスコーディングを行う方法を紹介します。
1. 配列トランスコーディング前の準備作業
配列トランスコーディングを実行する前に、まず配列のエンコード形式を明確にする必要があります。配列のエンコード形式がわからない場合は、PHP 組み込み関数 mb_detect_encoding()
を使用して判断できます。
$charset = mb_detect_encoding($array, array('UTF-8', 'GB2312', 'GBK', 'BIG5', 'ISO-8859-1'));
このうち、パラメータ $array
は検出対象の配列、パラメータ array('UTF-8', 'GB2312', 'GBK', ' BIG5', 'ISO -8859-1')
は、検出するエンコード形式を指定します。
配列のエンコード形式がわかっている場合 (たとえば、配列エンコードが GB2312 である場合)、PHP 組み込み関数 iconv()
を使用してエンコード変換を実行できます。
$array_gb2312 = iconv('UTF-8', 'GB2312', $array);
上記のコードは、UTF-8 でエンコードされた配列 $array
を GB2312 でエンコードされた配列 $array_gb2312
に変換します。 iconv()
関数の最初と 2 番目のパラメータはそれぞれ元のエンコーディングとターゲット エンコーディングを指定し、3 番目のパラメータは変換される配列であることに注意してください。
2. 配列をトランスコードして配列に保存する
配列をエンコードして変換するプロセスでは、変換された配列の各要素を新しい配列に保存する必要がある場合があります。 。ループ トラバーサルを使用して、各要素を新しい配列に格納できます。
$new_array = array(); foreach($array as $value){ $new_value = iconv('UTF-8', 'GB2312', $value); array_push($new_array, $new_value); }
上記のコードは、UTF-8 でエンコードされた配列 $array
を GB2312 でエンコードされた配列 $new_array
に変換します。ループ内で各要素をエンコードして変換する必要があることに注意してください。その後、array_push()
関数を使用して新しい要素を新しい配列に追加します。
配列内の多次元要素のエンコーディングを変換する必要がある場合は、array_map()
関数と is_array()
関数を組み合わせて使用できます。関数。
function encode_array($value){ if(is_array($value)){ return array_map('encode_array', $value); } else{ $new_value = iconv('UTF-8', 'GB2312', $value); return $new_value; } } $new_array = array_map('encode_array', $array);
上記のコードは、UTF-8 エンコード配列 $array
の多次元要素を GB2312 エンコード配列 $new_array
に変換します。 encode_array()
関数では、まず要素が配列であるかどうかを判断し、配列である場合は array_map()
を使用して再帰的変換を実行し、それ以外の場合は単一の要素に対してエンコード変換を実行します。最後に、array_map()
を使用して元の配列を走査し、配列のすべての変換を完了します。
3. 概要
この記事では、配列エンコード形式の検出や配列から配列へのトランスコードなどの操作を含む、PHP での配列エンコード変換の操作を紹介します。操作中は、統一されたエンコード形式とループ トラバーサルの正しい使用に注意する必要があります。配列のトランスコード方法を正しく使用することによってのみ、文字化けや文字セットの不一致などの問題を回避できます。
以上がPHP 配列トランスコーディングを配列に格納の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。