In PHP, processing data is an operation we often need to perform. Especially in web development, we often need to obtain data from the client or external interface, and then process or store the data. In some cases, we need to convert the array encoding, such as converting UTF-8 encoding to GB2312 encoding or converting ISO-8859-1 encoding to UTF-8 encoding. This article will introduce how to perform array transcoding in PHP.
1. Preparation work before array transcoding
Before performing array transcoding, you first need to clarify the encoding format of the array. If you are not sure about the encoding format of the array, you can use the PHP built-in function mb_detect_encoding()
to judge.
$charset = mb_detect_encoding($array, array('UTF-8', 'GB2312', 'GBK', 'BIG5', 'ISO-8859-1'));
Among them, the parameter $array
is the array to be detected, and the parameter array('UTF-8', 'GB2312', 'GBK', 'BIG5', 'ISO -8859-1')
specifies the encoding format to be detected.
If the encoding format of the array is known, for example, the array encoding is GB2312, you can use the PHP built-in function iconv()
to perform encoding conversion.
$array_gb2312 = iconv('UTF-8', 'GB2312', $array);
The above code converts the UTF-8 encoded array $array
into the GB2312 encoded array $array_gb2312
. It should be noted that the first and second parameters of the iconv()
function specify the original encoding and target encoding respectively, and the third parameter is the array to be converted.
2. Transcode the array and store it in the array
In the process of encoding and converting the array, sometimes it is necessary to store each element of the converted array into a new array. . You can use loop traversal to store each element in a new array.
$new_array = array(); foreach($array as $value){ $new_value = iconv('UTF-8', 'GB2312', $value); array_push($new_array, $new_value); }
The above code converts the UTF-8 encoded array $array
into the GB2312 encoded array $new_array
. It should be noted that inside the loop, each element must be encoded and converted, and then the array_push()
function is used to add the new element to the new array.
If you need to convert the encoding of multi-dimensional elements in the array, you can use the combination of the array_map()
function and the is_array()
function.
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);
The above code converts the multidimensional elements in the UTF-8 encoded array $array
into the GB2312 encoded array $new_array
. In the encode_array()
function, first determine whether the element is an array. If so, use array_map()
to perform recursive conversion again, otherwise perform encoding conversion on a single element. Finally, use array_map()
to traverse the original array and complete all conversions of the array.
3. Summary
This article introduces the operations of array encoding conversion in PHP, including operations such as detecting the array encoding format and transcoding the array into the array. During the operation, you need to pay attention to the uniform encoding format and the correct use of loop traversal. Only by using the array transcoding method correctly can problems such as garbled characters and character set mismatch be avoided.
The above is the detailed content of PHP array transcoding stored in array. For more information, please follow other related articles on the PHP Chinese website!