2014-09-24 4 views
0

일부 csv 데이터를 가져 오기위한 각 루프마다 하나씩 있습니다. 전체 루프가 데이터의 각 행에서 실행 된 후에 $ i를 늘려야합니다.각 foreach 루프 이후에 변수가 증가합니다.

데이터는 단 2 행을 간단 9 열 및 테스트 파일입니다 가고 있지만, 자극 파일은 500 행

내가 공을 동일하게

$i=0; 
foreach ($meta as $key => $value) { 

    // If custom filed name is "textfield" 
    if ($key == 'FirstName') { 
     $meta_array[0]['members_'.$i.'_first_name'] = $value; 
     $meta_array[1]['_members_'.$i.'_first_name'] = 'field_53eac4161a811'; 

    } elseif ($key == 'LastName') { 
     $meta_array[0]['members_'.$i.'_last_name'] = $value; 
     $meta_array[1]['_members_'.$i.'_last_name'] = 'field_53eac4291a812'; 

    } elseif ($key == 'Add1') { 
     $meta_array[0]['members_'.$i.'_street'] = $value; 
     $meta_array[1]['_members_'.$i.'_street'] = 'field_53eb96fc5d7da'; 

    } elseif ($key == 'City') { 
     $meta_array[0]['members_'.$i.'_city'] = $value; 
     $meta_array[1]['_members_'.$i.'_city'] = 'field_53eb97335d7dc'; 

    } elseif ($key == 'State') { 
     $meta_array[0]['members_'.$i.'_state'] = $value; 
     $meta_array[1]['_members_'.$i.'_state'] = 'field_5421e190161b0'; 

    } elseif ($key == '__ZipCode__') { 
     $meta_array[0]['members_'.$i.'_zip_code'] = $value; 
     $meta_array[1]['_members_'.$i.'_zip_code'] = 'field_5421e1acc0d65'; 

    } elseif ($key == 'Phone') { 
     $meta_array[0]['members_'.$i.'_phone'] = $value; 
     $meta_array[1]['_members_'.$i.'_phone'] = 'field_53ebb3419d355'; 

    } elseif ($key == 'Email') { 
     $meta_array[0]['members_'.$i.'_email'] = $value; 
     $meta_array[1]['_members_'.$i.'_email'] = 'field_5421e1b4c0d66'; 

    // Create array data to import to the Repeater Field 
    } else { 
     $meta_array[$key] = $value; 
    } 

} 

그래서 내가 $ 필요

ID,LastName,FirstName,Add1,City,State,__ZipCode__,Phone,Email 
11,lastnamevalue,firstnamevalue,addressvalue,cityvalue,MA,zip,6phone,email value 
11,lastnamevalue2,firstnamevalue2,addressvalue2,cityvalue2,MA,zip2,6phone2,email value2 

루프 정보입니다 각각의 if 문을 if 문으로 처리 한 다음 마지막 전자 메일에 도달 할 때까지 1로 증가하고 각각에 대해 1을 유지해야하며 마지막 경우까지 증가한 다음 2로 증가해야합니다. 앞뒤 ...

나는 else를 계산할 필요가 있다고 생각하지만 나는 루프가 끔찍하다. 그리고 항상 0이되도록하거나 모든 줄에서 1 씩 증가 시켜서 firstname 1 firstname 2 등이된다.

UPDATE : csv 데이터를 가져 오는 WordPress 용 플러그인입니다 ... csv는 이름 성으로 설정됩니다 ... 각 값은 실제 값으로 설정되고 그 다음에 anotehr이 "field_53eac4161a811"또는 그 각각으로 설정됩니다 하나는 ... 그래서 각 elseif는 데이터베이스에 두 개의 행을 입력합니다. (배열은 모든 teh 정보가 일치하지만 $ i는 항상 루프 당 한 번이 아니라 각 키/값에 대해 항상 0 또는 증분으로 배열됩니다). $ i 변수가 데이터의 각 csv 행에 대해 변경되는 유일한 마커이기 때문에 이전의 변수를 덮어 쓰는 것을 제외하고는 ... 그 것이 설명하는 데 도움이되는지 확실하지 않습니다.

아래의 내용은 다음과 같습니다. 파일이 teh csv 데이터의 다음 줄을 구문 분석 할 때를 제외하고는 1 1 1 1 1 1 대신에 0 0 0 0 0 0이 표시됩니다.

Array 
    (
    [0] => Array 
    (
     [members_0_last_name] => name value 
     [members_0_first_name] => first name value 
     [members_0_street] => street value 
     [members_0_city] => city value 
     [members_0_state] => state 
     [members_0_zip_code] => zip 
     [members_0_phone] => phone 
     [members_0_email] => email 
    ) 

[1] => Array 
    (
     [_members_0_last_name] => field_53eac4291a812 
     [_members_0_first_name] => field_53eac4161a811 
     [_members_0_street] => field_53eb96fc5d7da 
     [_members_0_city] => field_53eb97335d7dc 
     [_members_0_state] => field_5421e190161b0 
     [_members_0_zip_code] => field_5421e1acc0d65 
     [_members_0_phone] => field_53ebb3419d355 
     [_members_0_email] => field_5421e1b4c0d66 
    ) 

[field_53eac3eb1a810] => Array 
    (
    ) 

) 
+2

루프 밖에서 '$ i'를 초기화 한 다음 루프의 끝 괄호 앞에 '$ i ++'를 증가 시키십시오. – Ghost

+0

@Ghost : 루프가 0, 0, 0, 0, 0으로 실행되기를 원합니다 , 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2 ... (각 숫자의 8 배), 매우 모호하고 많은 정보가 더해지지 않습니다. OP, 입력 파일 샘플을 제공하면 정말 도움이 될 것입니다. – Amadan

+0

그러면 $ i 변수 각각에 1을 더해 최종 값이 8로 끝나고 각각의 키 값을 가져 와서 $ i = 0을 가지고 각 키 값을 다시 가져 와서 $ i = 1을 모두가집니다. .. – HostandMore

답변

-1

한 번만 각기 타격을 가하지 않습니까? 마지막 else 블록 안에 증가분을 넣을 수 있습니다.

+2

이것은 맞습니다 반복 키가있는 배열을 가질 수 없습니다. 이것은 유효한 포인트입니다. 그러나 주석에 포함됩니다. – Amadan

+0

아마도 다른 방법으로 루프를 돌릴 수 있습니다. foreach 루프를 사용하여 루프를 돌았고 모든 코드를 변경하지 않아도 될 것이라고 기대했습니다. – HostandMore

+0

그리고 마지막으로 다른 코드를 삽입했습니다. 블록은 아무것도 바뀌지 않았습니다 ... 여전히 0으로 모두 출력됩니다. – HostandMore