2

「123~456!!!789~012!!!345~678!!!901~234!!!567~890!!!1234~5678」という長い文字列があります。私はこの文字列の区切り文字の種類に慣れてきました~!!! . この文字列を 2 次元配列に分解 (分割) する効率的な方法を教えてください。例:

$txt = "123~456!!!789~012!!!345~678!!!901~234!!!567~890!!!1234~5678".

分解/分割後の 2D 配列。

array[0][0] = 123 ; array[0][1] = 456 ;
array[1][0] = 789 ; array[1][1] = 012 ; 
array[2][0] = 345 ; array[2][1] = 678 ;
array[3][0] = 901 ; array[3][1] = 234;
array[4][0] = 567 ; array[4][1] = 890;
array[5][0] = 1234 ; array[5][1] = 5678;

ありがとう。:)

4

4 に答える 4

0

必要なのは次のとおりです。

foreach(explode("!!!",$txt) AS $key => $subarray) {
    $array[$key] = explode("~",$subarray);
}
print_r($array);

迅速かつ効率的に、2 次元配列を取得できます。

参照: http://3v4l.org/2fmdn

于 2013-04-05T01:46:37.787 に答える
0

preg_match_all()using を使用しPREG_SET_ORDERて各アイテムをマップし、ゼロ インデックスを削除できます。

$txt = "123~456!!!789~012!!!345~678!!!901~234!!!567~890!!!1234~5678";

if (preg_match_all('/(\d+)~(\d+)/', $txt, $matches, PREG_SET_ORDER)) {
        $res = array_map(function($item) {
                return array_slice($item, 1);
        }, $matches);
        print_r($res);
}

または、 double を使用しますexplode()

$res = array_map(function($item) {
    return explode('~', $item, 2);
}, explode('!!!', $txt));
print_r($res);
于 2013-04-05T01:47:42.260 に答える