2009-10-27 4 views
0

다음 코드를 실행할 때 잘못된 인수 오류가 발생합니다. 나는 $info 배열에있는 라인의 값을 변경하려고 시도하고, 그 다음에 그것을 내파하고, 그것의 부모 배열을 implode 한 다음, 전체 shebang을 다시 원래대로 저장합니다.PHP에서 삽입 할 때 인수가 올바르지 않습니다.

$rowpre = $_GET['row']; 
$newfieldvalue = $_GET['nfv']; 
$target = $_GET['target']; 
$row = --$rowpre; 
$data = file_get_contents("temp.php"); 
$csvpre = explode("###", $data); 
$i = 0; 
    foreach ($csvpre AS $key => $value){ 
     $i++; 
     if($i == $row){ 
      $info = explode("%%", $value); 
      $info[$target] = $newfieldvalue; 

      $csvpre[$key] = implode("%%", $info); 
     }   
    } 


$save = implode("###", $csvpre); 
$fh = fopen("temp.php", 'w') or die("can't open file"); 
fwrite($fh, $save); 
fclose($fh); 

타겟 아래

$rowpre = $_GET['row']; 
$newfieldvalue = $_GET['nfv']; 
$row = --$rowpre; 
$data = file_get_contents("temp.php"); 
$csvpre = explode("###", $data); 
$i = 0; 
    foreach ($csvpre AS $key => $value){ 
     $i++; 
     if($i = $row){ 
      $info = explode("%%", $value); 
      $info[$target] = $newfieldvalue; 

      $presave = implode("%%", $info);  
     }   
    } 


$save = implode("###", $presave); 
$fh = fopen("temp.php", 'w') or die("can't open file"); 
fwrite($fh, $save); 
fclose($fh); 

업데이트 내가 newfieldvalue 데이터를 업데이트 할 선택된 로우 내의 필드이다.

답변

2

$ save = implode ("###", $ presave);

이 시점에서 $presave은 문자열이며 implode와 함께 작동하는 배열이어야합니다. $ presave-values를 푸시 (put)하는 배열을 작성해, 그것을 내포합니다.

1

$presave에는 마지막으로 처리 된 줄 (즉, 문자열)이 포함되어 있으며 implode에는 배열이 필요합니다. 원래의 배열 변화를 다시 라인을 저장하려면

$csvpre[$key] = implode("%%", $info); 

그리고 문자열 변경으로 전체 CSV 배열을 변환하는 :

$presave = implode("%%", $info); 

$save = implode("###", $presave); 

에 :

$save = implode("###", $csvpre); 

blem :

if($i = $row){ 

가 있어야한다 :

if($i == $row){ 

당신이 $i을 할당 변수를하지 비교할 때문이다.

+0

오류없이 실행되지만 $ info [$ target] = $ newfieldvalue의 배열에서 행을 변경하지 않는 것 같습니다. – mrpatg

+0

여기서'$ target'이 정의됩니다. 'print_r'을'$ csvpre' 배열에 넣고 실제로 수정하고 있는지 확인하십시오. –

관련 문제