2012-07-16 6 views
0

코드를 변경하려면 어떻게해야합니까? 에코이 내 코드 단지 1 편지 m배열로 PHP 찾기

입니다 :

$string = '[email protected],123,12,1|[email protected],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 = [email protected] 
$score1 = 123 
$street1 = 12 
$rank1 = 1 

$email2 = [email protected] 
$score2 = 321 
$street2 = 21 
$rank2 = 2 

는이 코드를 할 수 있습니다 email1과 email2를 출력 하시겠습니까? 이 내 코드가 맞거나 뭔가를 바꿔야합니까?

감사합니다.

+1

, 난 당신이 문자열이 방법을 사용하지 좋을 걸. 끈은 어디에서 오는거야? – Adi

+0

코드를 복사하여 붙여 넣습니다. 출력은 'mm'이 아니라 'm'입니다. –

답변

4

중첩 루프를 사용해야합니다. 첫 번째는 파이프로 구분 된 데이터를 반복하고 두 번째는 쉼표로 구분 된 항목을 반복합니다. 여기

$string = '[email protected],123,12,1|[email protected],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

+0

이 코드에 대해 감사드립니다. – user1506189