带数组的php搜索

带数组的php搜索,php,foreach,Php,Foreach,我需要为我的代码更改什么? 回声只有一个字母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' =&g

我需要为我的代码更改什么? 回声只有一个字母
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? 我的代码是正确的还是需要更改


谢谢。

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

$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;
}
$string='1!'mars@email.com,123,12,1|art@hur.com,321,32,2';
$entries=分解(“|”,$string);
foreach($i=>$entry形式的条目){
$parts=分解(“,”,$entry,4);
如果(计算($parts)<4){
//零件不够,出错或是什么
}
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;
}

示例-

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

$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;
}
$string='1!'mars@email.com,123,12,1|art@hur.com,321,32,2';
$entries=分解(“|”,$string);
foreach($i=>$entry形式的条目){
$parts=分解(“,”,$entry,4);
如果(计算($parts)<4){
//没有足够的零件,抛出一个错误或什么的
}
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;
}

这里的示例-

添加到Phil的简洁解决方案中,我建议您不要以这种方式使用字符串。字符串从哪里来?复制粘贴代码。输出是“mm”而不是“m”。再加上Phil的简洁解决方案,我建议您不要以这种方式使用字符串。字符串从哪里来?复制粘贴代码。输出为“mm”而不是“m”。