0

これどうやったら爆破できるの?mars@email.com,123,12,1|art@hur.com,321,32,2

出力は次のようになります。

$email = mars@email.com
$score = 123
$street = 12
$rank = 1

次に、|

$email = art@hur.com
$score = 321
$street = 32
$rank = 2


$string = mars@email.com,123,12,1|art@hur.com,321,32,2
explode( ',', $string );

あれは正しいですか?

4

7 に答える 7

2
 foreach(explode('|', $str) as $v){
     $data = explode(',',$v);
     echo '$email = '.$data[0].
     '$score = '.$data[1].
     '$street = '.$data[2].
     '$rank = '.$data[3];
 }
于 2012-07-15T17:34:53.510 に答える
1

Explode() ではなく strtok() を使用することをお勧めします。

http://www.php.net/manual/en/function.strtok.php

于 2012-07-15T17:34:15.463 に答える
1
$arr = preg_split( '"[,|]"', 'mars@email.com,123,12,1|art@hur.com,321,32,2' );
$len = count($arr);
for( $i = 0; $i < $len; $i+=4 ) {
    $email = $arr[$i];
    $score = $arr[$i+1];
    $street = $arr[$i+2];
    $rank = $arr[$i+3];
}
于 2012-07-15T17:40:40.813 に答える
0

あなたが欲しいのはこんな感じだと思います

   $output = array();

foreach (explode('|', $string) as $person) {
    $output[] = array(
        'email'   =>    $person[0],
        'score'   =>    $person[1],
        'street'  =>    $person[2],
        'rank'    =>    $person[3]
    )
}

これにより、すべての結果が多次元配列に格納されます。たとえば、人物1のメールを印刷するには、次のように使用します。

echo $output[0]['email'];   // mars@email.com

人2の通りにアクセスするには、

echo $output[1]['street'];   // 32
于 2012-07-15T17:49:48.400 に答える
0

新しい配列を変数に保存する必要があります >

$arr = explode(',',$string);

2番目の部分( の後)でやりたいことがわかりませんが|、これを行うことで最初のパーを取得できます>$half = explode('|',$string)[0];

于 2012-07-15T17:34:25.390 に答える
0

正しい順序でそれを解明する必要があります:

  • 最初に区切られたブロック|

  • で区切られた個々のセル,

そのための簡潔な方法は次のとおりです。

$array = array_map("str_getcsv", explode("|", $data));

2D配列を提供します。

于 2012-07-15T17:35:51.910 に答える
0

strtok を使用して爆発します。

$tok = strtok($string, "|");

while ($tok !== false) {
    list($email, $score, $street, $rank) = explode(',', $tok);
    $tok = strtok(",");
}
于 2012-07-15T17:36:42.813 に答える