私は次のような文字列を持っています:
「0123456789」
各文字を配列に分割する必要があります。
私はそれの地獄のために試しました:
explode('', '123545789');
しかし、それは私に明らかなものを与えました:警告:爆発で定義された区切り文字なし) ..
どうやってこれに出会うでしょうか?どんな方法も手に入らない
$array = str_split("0123456789bcdfghjkmnpqrstvwxyz");
str_split は、オプションの2番目のパラメーターであるチャンク長(デフォルトは1)を取るため、次のようなことができます。
$array = str_split("aabbccdd", 2);
// $array[0] = aa
// $array[1] = bb
// $array[2] = cc etc ...
文字列を配列として扱うことで、文字列の一部を取得することもできます。
$string = "hello";
echo $string[1];
// outputs "e"
何を達成しようとしていますか?配列のように文字列内の文字にアクセスできます。
$s = 'abcd';
echo $s[0];
'a'を出力します
これを試して:
$str = '123456789';
$char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
str_split
トリックを行うことができます。 PHPの文字列はchars配列のようにアクセスできます。ほとんどの場合、文字列を「新しい」配列に分割する必要はありません。
以下は、マルチバイト(UTF-8)文字列で機能する例です。
_$str = 'äbcd';
// PHP 5.4.8 allows null as the third argument of mb_strpos() function
do {
$arr[] = mb_substr( $str, 0, 1, 'utf-8' );
} while ( $str = mb_substr( $str, 1, mb_strlen( $str ), 'utf-8' ) );
_
preg_split()
(preg_split( '//u', $str, null, PREG_SPLIT_NO_EMPTY )
)でも実行できますが、上記の例とは異なり、文字列のサイズに関係なくほぼ同じ速度で実行されますpreg_split()
は小さな文字列では高速ですが、大きな文字列では非常に遅くなります。
これを試して:
$str = "Hello Friend";
$arr1 = str_split($str);
$arr2 = str_split($str, 3);
print_r($arr1);
print_r($arr2);
上記の例は次を出力します:
Array
(
[0] => H
[1] => e
[2] => l
[3] => l
[4] => o
[5] =>
[6] => F
[7] => r
[8] => i
[9] => e
[10] => n
[11] => d
)
Array
(
[0] => Hel
[1] => lo
[2] => Fri
[3] => end
)
これを試して:
$str = '546788';
$char_array = preg_split('//', $str, -1, PREG_SPLIT_NO_EMPTY);
$array = str_split("$string");
実際にはかなりうまく機能しますが、その文字列の特殊文字を保持したい場合は、それらを使用して何らかの操作を行いたい場合は、
do {
$array[] = mb_substr( $string, 0, 1, 'utf-8' );
} while ( $string = mb_substr( $string, 1, mb_strlen( $string ), 'utf-8' ) );
私の個人的な用途のいくつかでは、特殊文字に問題がある場合に信頼性が高いことが示されているため
文字列を分割する場合は、次を使用することをお勧めします。
$array = str_split($string);
文字列を区切る区切り文字がある場合は、試してみてください、
explode('' ,$string);
次のように、explode内の最初の変数で区切り文字を渡すことができます。
explode(',',$string);