2012-11-20 2 views
0

다차원 연관 배열 내의 요소에 어떻게 액세스합니까? 나는 이것이 간단하지만 php.net 예제를 사용할 수 없다는 것을 알고있다.PHP : 다차원 연관 배열 내의 요소에 액세스하는 방법

$의 csv_array에는 다음이 포함

Array 
(
    [0] => Array 
     (
      ['name'] => 'DUMMY NAME' 
      ['email'] => 'DUMMYEMAIL' 
      ['Volunteering'] => '1' 
     ) 
) 

을 $ 행이 0 print $csv_array[$row]['email']; 아무것도 인쇄되지 않습니다 실행하는 것은 그러나 때 - 그것은 'DUMMYEMAIL'를 인쇄하지 않겠습니까? 이런 일이 어디

http://thomasash.philosofiles.com/uploads/examples/php/parsecsv/csv1.php에있다 - 소스 코드를 http://pastebin.com/nf2Xft7J

+0

방법 인쇄 $의 csv_array에 대한 [0] [ '이메일']? – Marty

+0

$ cvs_array [$ row] [1]이 (가) 작동합니까? – Naryl

+0

구문을 현명하게 사용해도 아무런 문제가 없습니다. $ row의 값이 유효하고 범위를 벗어나지 않았는지 확인하십시오. $ csv_array [0] [ 'email']을 직접 인쇄하여 확인하십시오. –

답변

2

에서 어떻게 $ 행이 0임을 알고, 따라서 위치 0 배열에 접근?

이렇게하면됩니다.

print $csv_array[0]['email']; 

또는 루프를 사용하십시오.

foreach($csv_array as $rowNum => $data) 
{ 
    echo $rowNum; 
    var_dump($data); 
} 
+0

그의 코드에서 초기화 된 $ 행이 0 인 것을 볼 수 있습니다. 따라서 문제가되지 않습니다. – Naryl

0

유일한 대체이와, 동일한 코드를 실행 :

$csv_array = Array 
(
    0 => Array 
     (
      'name' => 'DUMMY NAME', 
      'email' => 'DUMMYEMAIL', 
      'Volunteering' => '1', 
      'Blog' => '1', 
      'News' => '1', 
      'chapter_interested_in' => 'Oxford', 
      'how_you_heard' => 'Other', 
      'how_you_heard_other' => 'xxx' 
     ) 
); 

대신 :

$file_path = "form-output/new_interest_list.csv"; 
require_once('parsecsv-0.3.2/parsecsv.lib.php'); 
$csv = new parseCSV($file_path); 
//$csv->auto('data.csv'); 
$csv_array = $csv->data; 

(제공된 링크에서 print_r($csv_data)의 출력되는 내 교체)

예상대로 작동합니다.

==PRINT== 
$csv_array[$row]['email'] is DUMMYEMAIL 

내 생각에 사용하는 특정 PHP 버전은 큰 따옴표로 묶인 문자열을 분석 할 때 버그가 있습니다. 라인 (26)에 당신이 있습니다

0으로 $ 행을 인쇄하지만 나중에 그것을 "\ n을 \ 없음"을 할당되어 설치에 (I 가정)
print "\n=KEYS FOR ROW $row=\n\n"; 

.... 내 목표는 끝나지 않지만 다른 가능한 원인은 없습니다. 이 줄에 연결을 사용하거나 $csv_array[$row]['email']앞에 줄 26을 인쇄하십시오. 예상되는 결과를 제공해야합니다.

0

내 생각에 일종의 인코딩 문제입니다. csv 파일에서 검색된 'email' 키 이름이 배열에서 색인을 생성하기 위해 스크립트에서 사용하는 'email' 값과 같지 않습니다.

array_keys 명령어 결과의 각 키를 'email' 문자열과 비교하여 일치하는 항목이 있는지 확인해보십시오. 그런데

은, 루프를 수정 :

for($row=0; $row < count($csv_array); $row++) { 
//    ^^^ 'strictly less than' is required there