0

我需要为我的代码更改什么?回声只有 1 个字母m

这是我的代码:

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

$output = array();

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

输出 :m

输出应该是:

$email1  = mars@email.com
$score1  = 123
$street1 = 12
$rank1   = 1

$email2  = art@hur.com
$score2  = 321
$street2 = 21
$rank2   = 2

是否可以执行此代码来输出 email1 和 email2?我的代码是正确的还是我需要改变一些东西?

谢谢你。

4

1 回答 1

4

您需要使用嵌套循环;第一个迭代管道分隔的数据,第二个迭代逗号分隔的条目。

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

$entries = explode('|', $string);
foreach ($entries as $i => $entry) {
    $parts = explode(',', $entry, 4);
    if (count($parts) < 4) {
        // not enough parts, throw an error or something
    }
    printf('$email%d  = %s%s', $i+1, $parts[0], PHP_EOL);
    printf('$score%d  = %s%s', $i+1, $parts[1], PHP_EOL);
    printf('$street%d = %s%s', $i+1, $parts[2], PHP_EOL);
    printf('$rank%d   = %s%s', $i+1, $parts[3], PHP_EOL);
    echo PHP_EOL;
}

这里的例子 - http://codepad.viper-7.com/82HbtT

于 2012-07-16T06:42:48.190 回答