Многие ответы здесь в Qaru используют fopen($file, "rw+"), но manual не перечисляет режим "rw+", там только режим "r+" (или "w+").
Итак, мне было интересно, , что делает режим "rw+"? Какая разница между fopen($file, "rw+" или "r+"? Я спрашиваю об этом, потому что в режиме "rw+" нет документации.
Один подход состоит в том, чтобы учитывать, что режимы являются аддитивными, но я не мог найти упоминания о сочетаниях режимов на странице руководства fopen (кроме того, что означает объединение "r" с "w+", если "w+" уже делает его доступным для чтения?). Но самое главное, режим w+ обрезает файл, а rw+ не усекает его (поэтому они не могут быть аддитивными). Вероятно, нет режима rw+, несмотря на его использование пользователями Stack Overflow. Возможно, это работает, потому что парсер игнорирует букву "w", поскольку режим rw+ выглядит как === r+?
Чтобы прояснить мой вопрос: что такое "rw+" режим, то есть, как он отличается от других режимов? Я получил только два ответа в комментариях: либо я должен проверить документацию (я уже проверял и перепроверяю), либо неверный ответ, который сказал, что он равен "w+" (это не так). "w+" обрезает файл, а "rw+" - нет.
Здесь script для тестирования (это доказывает, что w+ обрезает файл, но rw+ не работает):
<?php
$file = "somefile";
$fileOpened = fopen($file, "w");
fwrite($fileOpened, "0000000000000000000");
fclose($fileOpened);
$fileOpened = fopen($file, "rw+");
fwrite($fileOpened, "data");
fclose($fileOpened);
$fileOpened = fopen($file, "r");
$output = fgets($fileOpened);
echo "First, with 'rw+' mode:<br>".$output;
$fileOpened = fopen($file, "w+");
fwrite($fileOpened, "data");
fclose($fileOpened);
$fileOpened = fopen($file, "r");
$output = fgets($fileOpened);
echo "<br><br><br>Now with only 'w+' mode:<br>".$output;
?>