Current Location: Home> Latest Articles> What should I do if str_split returns the array incorrect order?

What should I do if str_split returns the array incorrect order?

M66 2025-05-28

In PHP, str_split() is a commonly used string segmentation function, which can split a string into multiple small character arrays. Normally, str_split() splits the string in character order and returns an array arranged in order. However, in some special cases, when str_split() is used, the returned array order may have exceptions.

Basic usage of str_split()

First, let’s take a look at a basic example, how to use the str_split() function:

 <?php
$string = "hello";
$array = str_split($string);
print_r($array);
?>

This code outputs the following array:

 Array
(
    [0] => h
    [1] => e
    [2] => l
    [3] => l
    [4] => o
)

As you can see, the str_split() function splits the string by character into an array arranged in order.

Problem: The array order is incorrect

However, sometimes you can run into a problem that the order of arrays returned using str_split() seems to be incorrect. The causes of this problem can be diverse, and the following lists several possible scenarios and solutions.

1. Character encoding problem

PHP uses UTF-8 encoding by default. If your string contains multibyte characters (such as Chinese, Japanese, etc.), str_split() may not handle these characters correctly. For multi-byte characters, str_split() will split the characters into bytes instead of splitting them by actual characters.

Solution : For multibyte characters, you can use the mb_str_split() function (need to enable mbstring extension) which correctly splits characters in the string instead of bytes.

 <?php
$string = "Hello";
$array = mb_str_split($string);
print_r($array);
?>

The result returned in this way will be:

 Array
(
    [0] => you
    [1] => good
)

2. The passed string contains invisible characters

Sometimes, the string may contain invisible characters, such as spaces, line breaks, etc., which will affect the order and content of the array after being split.

Solution : You can use the trim() function to remove whitespace characters at both ends of the string, or use str_replace() to delete invisible characters in the string.

 <?php
$string = " hello ";
$string = trim($string); // Remove whitespace characters at both ends
$array = str_split($string);
print_r($array);
?>

3. Split length problem

The str_split() function has an optional parameter $length , which represents the maximum length of each array element. If you pass in a length, PHP splits the string by that length. If the $length value is set improperly, it may cause the split as expected.

Solution : Check the $length parameter to make sure it is set correctly. For example, if you want each array element to contain 2 characters, you can write this:

 <?php
$string = "abcdef";
$array = str_split($string, 2); // Every2A set of characters
print_r($array);
?>

The output will be:

 Array
(
    [0] => ab
    [1] => cd
    [2] => ef
)

in conclusion

The str_split() function works as expected in most cases, but if you encounter the wrong order of the returned array, you can debug it through the following methods:

  1. To confirm whether the string encoding is correct, especially for multibyte characters, you can use mb_str_split() .

  2. Confirm whether the string contains invisible characters and use trim() or str_replace() for processing.

  3. Check whether the split length parameter $length is set correctly.

With the above method, you should be able to solve the problem that the str_split() function returns an incorrect order.