在php中进行内爆时无效的参数

时间:2009-10-27 07:31:04

标签: php arrays

运行以下代码时出现无效参数错误。我试图更改$info数组中一行的值,然后将其内爆,内爆其父数组,然后将整个shebang保存回原来的位置。

$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);

更新

$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);

目标是我希望使用newfieldvalue数据更新的所选行中的字段。

2 个答案:

答案 0 :(得分:2)

  

$ save = implode(“###”,$ presave);

此时,$presave是一个字符串,应该是一个可以使用implode的数组。创建一个数组,在其中推送$ presave-values,然后将其推翻。

答案 1 :(得分:1)

$presave包含最后处理的行(即字符串),implode包含数组。要将行存储回原始数组,请更改:

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

为:

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

要将整个CSV数组转换为字符串,请更改:

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

为:

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

还有一个问题:

if($i = $row){

应该是:

if($i == $row){

因为您想要比较变量,而不是分配$i