运行以下代码时出现无效参数错误。我试图更改$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数据更新的所选行中的字段。
答案 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
。