неверный аргумент при имплозии в php - PullRequest
0 голосов
/ 27 октября 2009

Я получаю неверную ошибку аргумента при запуске следующего кода. Я пытаюсь изменить значение строки в массиве $info, затем развернуть его, развернуть родительский массив, а затем сохранить весь шебанг обратно, откуда он пришел.

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

Цель - это поле в выбранной строке, которое я хочу обновить с использованием данных нового поля.

Ответы [ 2 ]

2 голосов
/ 27 октября 2009

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

В этот момент $presave - это строка, и она должна быть массивом для работы с implode. Создайте массив, в который вы помещаете $ presave-values, и внедрите его.

1 голос
/ 27 октября 2009

$presave содержит последнюю обработанную строку (т.е. строку), а implode ожидает массив.Чтобы сохранить строку в исходном массиве, измените:

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

на:

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

И чтобы преобразовать весь массив CSV в строку, измените:

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

до:

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

И еще одна проблема:

if($i = $row){

должно быть:

if($i == $row){

, потому что вы хотите сравнить переменные, а неприсваивать $i.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...