У меня сейчас есть этот блок:
if ($type == "up") {
$lines_ = file('../indexIncomplete');
$counter = 0;
foreach ($lines_ as $value) {
$postLen = strlen($post);
if ( substr($value, 0, $postLen) === $post ) {
break;
}
$counter++;
}
list($title, $location, $votes, $poster, $date) = explode("|", $lines_[$counter]);
$votes = $votes + 1;
$newValue = $title.'|'.$location.'|'.$votes.'|'.$poster.'|'.$date;
$lines_[$counter] = $newValue;
file_put_contents('../indexIncomplete', $lines_);
}
Это содержится на странице HTML, которая содержит форму, которая вызывает ее (над этим блоком есть некоторая логика, которая выполняет проверку и прочее, здесь я сузил проблему).
Я вытягиваю содержимое файла в массив. Затем я просматриваю массив, чтобы увидеть, соответствует ли один из них $post
(строка, объявленная ранее). Если он совпадает, цикл прерывается, и счетчик указывает на позицию в массиве, который содержит соответствующую строку. Затем я беру различные части строки (используя explode()
). Я беру $value
, увеличиваю его и перестраиваю новую запись массива. Я заменяю старую запись массива новой, которую я только что построил на этой строке:
$lines_[$counter] = $newValue;
Я записываю новый массив обратно в файл. Проблема в том, что $newValue
при записи, похоже, не воспринимает любую другую переменную, кроме $votes
, что делает ее похожей на это:
||1||
Где число - это правильное количество голосов. Он должен выглядеть так:
$title|$location|$votes|$poster|$date
Кроме того, он не появляется на строке, которую он должен. Вместо этого он добавляется в конец файла. Я очень смущен.