PHP: POST-- Как заменить определенный KEY из ARRAY в файле - PullRequest
0 голосов
/ 17 февраля 2011

Я немного растерялся, потому что я "зеленый" в PHP.

Пожалуйста, не могли бы вы научить меня, как это исправить:

в 'POST' -> Replaceуказанный ключ массива из файла:

(WRONG:)

<?php
    $newData = $_POST["sendData"]; 

    if(isset($_POST['sendData'])){

        $file = fopen('fileToOpen.php', 'a');

        foreach($file as $key => $val) 
        {
            $data[$key] = explode("|", $val);
        }

        for($k = 0; $k < sizeof($file); $k++)
        {
            unset($data[$k][3]);
        }

        $data[$k][3] = "$newData";
        fwrite($file, $data[$k][3]);
        fclose ($file);

    }
?>

Это неправильно, поскольку он продолжает записывать:

data1 | data2 | data3 | oldDatanewData

вместо перезаписи:

data1 | data2 | data3 | newData

Есть ли другой метод для достижения чего-то подобного?Возможно с file_put_contents?Я скучаю по implode?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 17 февраля 2011

Не знаю, что вы просите, но, возможно, вам нужно только сериализовать и десериализовать массив.

$data_array = unserialize(file_get_contents('fileToOpen.php'));
$data_array[$key_you_want_to_change] = $new_data;
file_put_contents('fileToOpen.php', serialize($data_array));
0 голосов
/ 17 февраля 2011

$ newData = $ _POST ['sendData'];

 if(isset($_POST['sendData'])){

 $file = "fileToOpen.php";

$ oldData = file_get_contents ($ file);

$ oldData = eregi_replace ("\ n", "", $ oldData);

$ FullDataArray = explode ("?", $ OldData); $ oldDataArray = explode ("|", $ FullDataArray [1]);

$ oldDataArray [3] = $ newData;

$ newDataString. = "

foreach ($ oldDataArray как $ key => $ val) {

$ newDataString. = $ Val;

if ($ key! = "3") {

$ newDataString. = "|";
} * * Тысяча двадцать-один

}

$ fh = fopen ($ file, 'w');

FWRITE ($ ФХ, $ newDataString);

fclose ($ ФХ);

}

?>

...