PHP . SU
Программирование на PHP, MySQL и другие веб-технологии
Без описания
Поиск в теме | Версия для печати
Dorn
Отправлено: 04 Ноября, 2022 - 01:11:46
Новичок
Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2022
Помог: 1 раз(а)
Уважаемые форумчане, нашел вот такое решение для вопроса, но вылетает ошибка.
Скажите, пожалуйста, что тут не так?
file.txt:
000|000|000|000|000|
111|Задача перезаписать или добавить сюда 123456|111|111|111|
111|111|111|111|111|
PHP:
$fileName = "file.txt";
function file2Array( $fileName ){
$out = array();
$rows = file( $fileName );
foreach( $rows as $rowNr => $row )
$out[$rowNr] = explode( "|", $row );
return $out;
}
function array2File( $array, $fileName ){
$fileString = "";
foreach($array as row) //PHP ругается на эту строку syntax error, unexpected ')', expecting '['
$fileString .= implode( "|", $row );
$fp = fopen( $fileName, "w" );
fwrite( $fp, $fileString );
fclose( $fp );
}
$fileArray = file2Array( $fileName );
$fileArray[1][2] = '123456';
array2File( $fileArray, $fileName );
Vladimir Kheifets
Отправлено: 04 Ноября, 2022 - 20:49:19
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017
Откуда: Германия, Бавария
Помог: 37 раз(а)
Dorn пишет: Уважаемые форумчане, нашел вот такое решение для вопроса, но вылетает ошибка.
Скажите, пожалуйста, что тут не так?
file.txt:
000|000|000|000|000|
111|Задача перезаписать или добавить сюда 123456|111|111|111|
111|111|111|111|111|
PHP:
$fileName = "file.txt";
function file2Array( $fileName ){
$out = array();
$rows = file( $fileName );
foreach( $rows as $rowNr => $row )
$out[$rowNr] = explode( "|", $row );
return $out;
}
function array2File( $array, $fileName ){
$fileString = "";
foreach($array as row) //PHP ругается на эту строку syntax error, unexpected ')', expecting '['
$fileString .= implode( "|", $row );
$fp = fopen( $fileName, "w" );
fwrite( $fp, $fileString );
fclose( $fp );
}
$fileArray = file2Array( $fileName );
$fileArray[1][2] = '123456';
array2File( $fileArray, $fileName );
Добрый день!
Если совсем поверхностно,только по синтаксису, то в строке
потерян символ $ перед row, т.е. это интепретируется как константа, а не переменная.
Удачи!
Dorn
Отправлено: 08 Ноября, 2022 - 17:55:30
Новичок
Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2022
Помог: 1 раз(а)
Невнимательность однако моя. Владимир, большое спасибо, я счастлив, оказывается так и вправду можно делать, всё работает, годный код!
Vladimir Kheifets пишет: Dorn пишет: Уважаемые форумчане, нашел вот такое решение для вопроса, но вылетает ошибка.
Скажите, пожалуйста, что тут не так?
file.txt:
000|000|000|000|000|
111|Задача перезаписать или добавить сюда 123456|111|111|111|
111|111|111|111|111|
PHP:
$fileName = "file.txt";
function file2Array( $fileName ){
$out = array();
$rows = file( $fileName );
foreach( $rows as $rowNr => $row )
$out[$rowNr] = explode( "|", $row );
return $out;
}
function array2File( $array, $fileName ){
$fileString = "";
foreach($array as row) //PHP ругается на эту строку syntax error, unexpected ')', expecting '['
$fileString .= implode( "|", $row );
$fp = fopen( $fileName, "w" );
fwrite( $fp, $fileString );
fclose( $fp );
}
$fileArray = file2Array( $fileName );
$fileArray[1][2] = '123456';
array2File( $fileArray, $fileName );
Добрый день!
Если совсем поверхностно,только по синтаксису, то в строке
потерян символ $ перед row, т.е. это интепретируется как константа, а не переменная.
Удачи!
Dorn
Отправлено: 11 Ноября, 2022 - 13:16:14
Новичок
Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2022
Помог: 1 раз(а)
Скажите, пожалуйста, а если я хочу именно дописать, то как могу я это сделать?
Наверное, через file_put_contents, но пока знаний не хватает )
Vladimir Kheifets пишет: Dorn пишет: Уважаемые форумчане, нашел вот такое решение для вопроса, но вылетает ошибка.
Скажите, пожалуйста, что тут не так?
file.txt:
000|000|000|000|000|
111|Задача перезаписать или добавить сюда 123456|111|111|111|
111|111|111|111|111|
PHP:
$fileName = "file.txt";
function file2Array( $fileName ){
$out = array();
$rows = file( $fileName );
foreach( $rows as $rowNr => $row )
$out[$rowNr] = explode( "|", $row );
return $out;
}
function array2File( $array, $fileName ){
$fileString = "";
foreach($array as row) //PHP ругается на эту строку syntax error, unexpected ')', expecting '['
$fileString .= implode( "|", $row );
$fp = fopen( $fileName, "w" );
fwrite( $fp, $fileString );
fclose( $fp );
}
$fileArray = file2Array( $fileName );
$fileArray[1][2] = '123456';
array2File( $fileArray, $fileName );
Добрый день!
Если совсем поверхностно,только по синтаксису, то в строке
потерян символ $ перед row, т.е. это интепретируется как константа, а не переменная.
Удачи!
LML
Отправлено: 11 Ноября, 2022 - 14:59:28
Новичок
Покинул форум
Сообщений всего: 24
Дата рег-ции: Февр. 2021
Помог: 1 раз(а)
Dorn пишет: Скажите, пожалуйста, а если я хочу именно дописать, то как могу я это сделать?
Наверное, через file_put_contents, но пока знаний не хватает )
Конечно же, и лучше и проще будет использование
file_put_contents .
Флаг FILE_APPEND указывает, что дописывать необходимо в конец файла.
Флаг LOCK_EX блокирует запись данного файла одновременно кем-нибудь другим.
В Вашем случае можно только сменить тип доступа с w на a .
'w' - Открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует - пытается его создать.
'a' - Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует - пытается его создать. В данном режиме функция fseek() не применима, записи всегда добавляются в конец.
Dorn
Отправлено: 18 Ноября, 2022 - 17:47:37
Новичок
Покинул форум
Сообщений всего: 11
Дата рег-ции: Июнь 2022
Помог: 1 раз(а)
Ну нет, конечно. Так оно не работает, вы же код точно видели.
LML пишет: Dorn пишет: Скажите, пожалуйста, а если я хочу именно дописать, то как могу я это сделать?
Наверное, через file_put_contents, но пока знаний не хватает )
Конечно же, и лучше и проще будет использование
file_put_contents .
Флаг
FILE_APPEND указывает, что дописывать необходимо в конец файла.
Флаг
LOCK_EX блокирует запись данного файла одновременно кем-нибудь другим.
В Вашем случае можно только сменить тип доступа с
w на
a .
'w' - Открывает файл только для записи; помещает указатель в начало файла и обрезает файл до нулевой длины. Если файл не существует - пытается его создать.
'a' - Открывает файл только для записи; помещает указатель в конец файла. Если файл не существует - пытается его создать. В данном режиме функция fseek() не применима, записи всегда добавляются в конец.
(Отредактировано автором: 18 Ноября, 2022 - 17:57:38)
Vladimir Kheifets
Отправлено: 19 Ноября, 2022 - 22:00:37
Частый посетитель
Покинул форум
Сообщений всего: 879
Дата рег-ции: Март 2017
Откуда: Германия, Бавария
Помог: 37 раз(а)
Dorn пишет: Если это не ярый костыль (вроде вполне норм), то вот решение:
$fileArray[1][1] = $fileArray[1][1].'123456';
Добрый день!
м.б. лучше было бы дороботать функцию
array2File PHP:
скопировать код в буфер обмена
function array2File( $array , $fileName , $i , $j , $option , $value ) {
$fileString = "" ;
if ( $option == "add" )
$array [ $i ] [ $j ] .= $value ;
if ( $option == "replace" )
$array [ $i ] [ $j ] = $value ;
foreach ( $array as $row )
$fileString .= implode ( "|" , $row ) . PHP_EOL
; }
Удачи!(Отредактировано автором: 19 Ноября, 2022 - 22:01:14)
Поиск в теме | Версия для печати
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
Powered by ExBB FM 1.0 RC1. InvisionExBB