В школьной работе я создал сайт для вымышленного космического музея в моем городе, используя PHP. В нем есть системы включения данных и консультации данных, но у меня есть проблема с консультацией, которую я хочу знать, как решить: как удалить последний разрыв строки из файла?
Включение данных
В закрытой зоне сайта у меня есть форма HTML5 с 5 полями (имя, адрес, номер телефона, пол и посещенные выставки), которая отправляет данные методом POST в функцию на PHP, которая записывает их в заданный текстовый файл. с помощью команды fwrite
:
fwrite ($pointer, "$name | $addres | $telephone | $sex | $exhibitions " .PHP_EOL);
Как видите, он записывает в txt-файл данные, введенные в форму, плюс разрыв строки. Указатель — это переменная, используемая fopen
для открытия файла, который мне нужен для работы. Пример вывода:
Марсио Агиар | улица Бельмиро Брага | 1234-5678 | М | Планеты Солнечной системы
Джоана Тобиас | Сантос-Даммонт-авеню | 8765-4321 | Ф | Черные дыры, спутники
Консультация по данным
Далее идет система консультаций. Он имеет цикл, который выполняется до тех пор, пока файл не закончится. Внутри этого цикла есть переменная с именем $buffer
, которая каждый раз получает одну строку txt-файла. Затем explode
d создает массив с именем $lines[$counter]
. Чтобы напечатать его красиво, я использую array_combine
, где я соединяю имена полей в другом массиве ($keys
) со значениями, записанными в $lines[$counter]
, и связываю это с $combined[$counter]
. Затем цикл завершается, и я использую print_r
внутри <pre></pre>
, чтобы увидеть данные, записанные в $combined
, сохраняя при этом пробелы и разрывы, которые в противном случае HTML проигнорировал бы. Вот код:
$keys = array ("Name", "Address", "Telephone", "Sex", "Visited exhibition");
for ($counter=0;!feof($reader);$counter++){
$buffer = fgets($reader);
$lines[$counter] = explode(" | ", $buffer);
$combined[$counter] = array_combine($keys, $lines[$counter]);
}
echo "<pre>";
print_r($combined);
echo "</pre>";
Пример вывода:
Array ( [0] => Array ( [Name] => Márcio Aguiar [Address] => Belmiro Braga Street [Telephone] => 1234-5678 [Sex] => M [Visited exhibitions] => Planets of Solar System ) [1] => Array ( [Name] => Joana Tobias [Address] => Santos Dummont Avenue [Telephone] => 8765-4321 [Sex] => F [Visited exhibitions] => Black Holes, Satellites ) [2] => )
Здесь вы можете видеть, что массив 2
был создан пустым. Это вызвано последней строкой, которая содержит только разрыв строки, вставленный формой выше. Мне нужно убрать этот последний разрыв строки, и только тот, но не знаю как. Я хочу знать! Незнание приводит к отображению ошибки, когда выполнение достигает array_combine
, потому что необходимо, чтобы два массива имели одинаковое количество элементов, а 2
было пустым. Здесь ошибка:
Предупреждение: array_combine(): Оба параметра должны иметь одинаковое количество элементов в E:\Aluno\Documents\Wamp\www\trab_1\area_restrita\consulta.php в строке 60.