2015-01-10 3 views
1

인덱스를 사용하여 문자열 배열에 값을 할당하려면 어떻게해야합니까? 배열에서 문자열의 값이 무엇인지 모르기 때문에 대신 키를 사용한다고 가정 해 보겠습니다. 문자열의 모든 목록 일 수인덱스를 기반으로 PHP 배열을 반복합니다.

어레이 :

$this->cols = array(
    'name', 
    'age' 
); 

할당 기능

$row = 1; 
     if (($f = fopen($this->file['tmp_name'], "r")) !== FALSE) { 
      while (($data = fgetcsv($f, 0, ",")) !== FALSE) { 
       $num = count($data); 
       $row++; 
       for ($c=0; $c < $num; $c++) { 
        $colName = $this->cols[$c]; 
        $this->cols[$colName] = $data[$c]; 
       } 
      } 

방법 I는 대응하는 값 ($ 데이터 [$ C])를 할당 할 인덱스를 제공하지 않으면 숫자 인덱스를 사용합니까? 나는이 기능을 실행하면

$colName[0] = 'name' 
$colName[1] = 'age' 

는하지만

0 => nameValue 
1 => ageValue 

대신

'name' => nameValue 
'age' => ageValue 
+0

$ f 란 무엇입니까? 그거 어디서 났어? –

+0

PHP 문서를 살펴 보는 것이 좋습니다. 여기서 배열 처리 기능이 풍부합니다. 모두 예제를 포함하여 자세한 설명이 있습니다. – arkascha

+0

내가 보는 주된 문제는 동시에 너무 많은 일이 일어나고 있다는 것입니다. 루프에서 파일을 읽은 부분과 루프에서 변수를 할당하십시오. 이 방법으로 모든 버그/문제가 훨씬 쉽게 발견 될 것입니다. –

답변

1

당신은 덮어 쓰기하고를 얻을 수 있기 때문에이 같은 배열에 액세스 할 수 있다는 사실을 알고 당신의 자신의 데이터 :

$num = count($data); 
$row++; 
for ($c=0; $c < $num; $c++) { 
    // every row of the CSV will update the same keys 
    $colName = $this->cols[$c]; 
    $this->cols[$colName] = $data[$c]; 

} 

// I suggest adding a `break` after that for look to see the problem. 
break; 

또는 코드를 업데이트하여 모든 값을 추적 할 수 있습니다.

$num = count($data); 
$row_val = array(); 
$this->cols[] = $row_val; 
$row++; 
for ($c=0; $c < $num; $c++) { 
    // every row of the CSV will update the same keys 
    $colName = $this->col_names[$c]; 
    $row_val[$colName] = $data[$c]; 

} 
+0

당신은 아마 맞을지 모르지만 나는 아직까지 그것을 얻지 못했습니다. 인덱스를 기반으로 배열에 값을 할당하는 방법을 이해하기를 원했습니다. – user3822370

+0

OK 답은 값을 할당하는 새로운 배열을 만듭니다. 감사. – user3822370

+0

실제로 OP가 무시되지 않았습니다. 배열에 추가 중이 었습니다. 이 코드를 실행할 때 0, 1, 이름, 나이 키가있는 4 개의 요소가 있습니다. – Riad