PHP: чтение и запись перменной
$rec = $_POST['rec']; Например передается 1
Теперь нужно открыть файл, вытащить единицу прибавить единицу из $rec и снова записать. Подскажите как это сделать?
$file = fopen("file.txt", "a+");
$g = int($file);
$r = int($rec);
$recieve = $r+$g;
fwrite($file, $recieve);
fclose($file);
//Бред конечно, но Вы мне подскажите где неправильно :D
$r = intval($_POST['rec']);
$receive = $r+$g;
$file = fopen('file.txt', 'w');
fprintf($file, '%d', $receive);
fclose($file);
fopen возвращает указатель на открытый файл (Returns a file pointer resource on success, or FALSE on error), для чтения следует применять fread/fgets, либо по совету выше сразу применять file_get_contents
$rec = int($_POST['rec']);
// в случае 'a+' результат будет дописан в конце, учтите этот момент
$file = fopen("file.txt", "a+");
if($file) {
$g = fread($file,BUFF_SIZE);
$result = $rec+int($g);
fwrite($file, $result);
fclose($file);
}
Alexander92,
Если уж для чтения решились использовать file_get_contents, то в условиях отсутствия специальных требований было бы весьма ожидаемо придерживаться одного стиля и применить file_put_contents
$r = intval($_POST['rec']);
$receive = $r+$g;
// принимая во внимания модификатор a+ из оригинального примера,
// здесь тоже указываем дописывать контент в конце файла
file_put_contents('file.txt', $recive, FILE_APPEND);
Alexander92,
Если уж для чтения решились использовать file_get_contents, то в условиях отсутствия специальных требований было бы весьма ожидаемо придерживаться одного стиля и применить file_put_contents
Я прошу прощения, file_get_contents и file_put_contents не равноценны хотя бы тем, что функция file_put_contents появилась, начиная с PHP5. Хотя в принципе, я согласен, что можно было бы оформить, например, так:
$g = fread($file, filesize('file.txt'));
...
fwrite($file, strval($g+$r));
fclose($file);
Какая разница когда она появилась? РНР4 мертв и использовать его не рекомендуется. РНР5 же стоит почти на всех хостингах. Сейчас все-таки к счастью не 2005 год, когда с этим были проблемы.
А ещё обещали в PHP6 (кстати, кто-нибудь слышал, будет оно, и скоро-ли?) избавиться от ereg'ов. Чёрт подери, у меня столько этих ereg'ов ещё с прошлого века натыркано повсеместно…
Потом PHP5 объявят мертвым, потом PHP6 и т.д. Нам постоянно переписывать код из-за этого? Может разработчики php выделят стандарты для собственно языка php, которые не будут меняться от релиза к релизу, как это сделали в том-же перле или сях
Причем объёмы переписываемого кода невелики, т.к. каких-то глобальных изменений не так уж и много. Переписывать много придется только в том случае, если изначально код кривой был (например, если писался с учетом register_globals).
Вот сейчас с таким кодом бьюсь. Мало того, что под true register_globals заточено (работает, но код абсолютно нечитаем), так ещё во всех мыслимых и немыслимых местах стоит инструкция global, заявляющая мне в харю: "а вот ищи где хочешь, откуда эта хрень припёрлась!", и при этом смеётся радостно, сволочь!
Если вы не знакомы с жизненным циклом ПО - очень советую ознакомиться. Время идет и поддерживать древнее барахло становится накладным (Windows Vista помниите? Одна из причин яростных тормозов ее как раз и были попытки держать обратную совместимость). Плюс ко всему для РНР нет жесткой типизации синтаксиса (как например это сделано для С++), а значит подобные проблемы будут возникать.
Не хотите парится с переписыванием кода каждый раз - смените профессию. Хотя быть может вы будете удивлены, но врачи, например, тоже постоянно меняют методы лечения на более современные, инженерам приходится использовать новые ГОСТы и ISO, и даже сантехники переходят на использование следующего поколения материалов принципиально не совместимых с предыдущими.
Что касается перла - не дай бог РНР развиваться так, как это делает Perl, который уже 11 лет не может разродится шестой версией. Де-факто Perl находится при смерти и единственное, что еще не дает ему умереть окончательно - это системные скрипты в *nix системах. Хотя и там ему на пятки наступает Python, который по многим параметрам лучше, удобнее, и код которого не похож на тайную переписку между фараоном и шифровальщиком с планеты Нибиру.
я с вас смеюсь, товарищ! мало того, что вы изволите нашару его использовать и даже может быть получать за это деньги, так ещё хотите, чтобы разработчики под вашу дудку плясали :D у них нормальные хорошие стандарты. более-менее радикально что-то поменялось только с 5-й версией, и все уже давно ко всему привыкли, даже к warning'ам, которые просто напоминают "товарищ, ты отстал от времени".
Это амперсанд
нет, это неправильное течение мысли в пластилине моих мозгов: думаю об одном - пишу другое :D