ในงานของโรงเรียน ฉันสร้างเว็บไซต์สำหรับพิพิธภัณฑ์อวกาศสมมติในเมืองของฉันโดยใช้ PHP มีระบบ Data Inclusion และ Data Consultation แต่ฉันมีปัญหาในการให้คำปรึกษาที่ต้องการทราบวิธีแก้ปัญหา: จะลบตัวแบ่งบรรทัดสุดท้ายออกจากไฟล์ได้อย่างไร?
การรวมข้อมูล
ในพื้นที่จำกัดของไซต์ ฉันมีแบบฟอร์ม HTML5 พร้อม 5 ฟิลด์ (ชื่อ ที่อยู่ หมายเลขโทรศัพท์ เพศ และนิทรรศการที่เยี่ยมชม) ซึ่งส่งข้อมูลโดยวิธี POST ไปยังฟังก์ชันใน PHP ที่เขียนลงในไฟล์ txt ที่กำหนด โดยใช้คำสั่ง fwrite
:
fwrite ($pointer, "$name | $addres | $telephone | $sex | $exhibitions " .PHP_EOL);
อย่างที่คุณเห็น ข้อมูลที่ป้อนในแบบฟอร์มจะเขียนเป็นไฟล์ txt พร้อมการขึ้นบรรทัดใหม่ ตัวชี้คือตัวแปรที่ใช้โดย fopen
เพื่อเปิดไฟล์ที่ฉันต้องใช้งาน ตัวอย่างผลลัพธ์:
มาร์ซิโอ อากีอาร์ | ถนนเบลมิโร บรากา | 1234-5678 | เอ็ม | ดาวเคราะห์ในระบบสุริยะ
Joana Tobias | ซานโตส ดัมมอนต์ อเวนิว | 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