در ادامه جلسه قبل، کار با فایل ها در php را ادامه می دهیم و ابتدا به معرفی حلقه foreach می پردازیم. سپس به خواندن فایل ها می رسیم.
حلقه foreach
اگر به خاطر داشته باشید در جلسات قبل گفتیم که در php حلقه های دیگری هم وجود دارد و به آن ها خواهیم پرداخت. حلقه foreach فقط برای آرایه ها مورد استفاده قرار خواهد گرفت و در هر بار اجرای حلقه کلید و محتوای یک عضو از آرایه را باز میگرداند. برای استفاده از این حلقه دو روش وجود دارد که به صورت زیر میباشد:
foreach (array as $value){ //code to run } //or foreach (array as $key => $value){ //code to run }
در روش اول، مقدار هر عضو از آرایه مورد نظر در هر بار اجرای حلقه در متغیری به نام value$ قرار میگیرد و در هر بار اجرای حلقه میتوان یک عضو ار آرایه را به عنوان مثال چاپ کرد یا عملیات دلخواه را روی آن انجام داد. اما در روش دوم، کلید هر عضو از آرایه را به key$ تغییر دادهایم و سپس مقدار هر عضو آرایه را در متغیر value$ قرار میدهیم.
برای درک بهتر به مثال زیر توجه کنید. در این مثال یک آرایه به نام names داریم که شامل چند نام است. قصد داریم با استفاده از حلقه foreach تک تک نامهای موجود در این آرایه را چاپ کنیم:
<?php $AllNames = Array("mojtaba", "hossein", "milad", "hamid", "masoud","mehdi"); foreach ($AllNames as $name) { echo $name . "<br>"; } ?>
با اجرای کد فوق، تمامی نامهای موجود در آرایه AllNames هر کدام در یک خط در مرورگر نمایش خواهند یافت. حال که با این حلقه هم آشنا شدید به ادامه مبحث کار با فایل ها میپردازیم.
خواندن فایلها
با استفاده از تابع ()file میتوانیم فایل مورد نظرمان را بخوانیم. این تابع فایل مورد نظر را در قالب یک آرایه برای ما آماده میکند و هر المان از فایل را به عنوان یک عضو از آرایه در نظر میگیرد.
درادامه جلسه قبل، فایل names.txt را در نظر بگیرید، اکنون باید شامل چند نام باشد. در واقع در هر خط از این فایل یک نام نوشته شده است. حال در پوشه files که در پوشه htdocs یا www ایجاد کرده بودید، یک فایل جدید به نام read.php ایجاد کنید. سپس کد زیر را در این فایل قرار دهید:
<?php $read = file("names.txt"); foreach($read as $name) { echo $name . " - "; } ?>
کد بالا تمام نامهای موجود در فایل names.txt را که در کنار فایل read.php وجود دارد خوانده و آنها را با علامت – از هم جدا میکند. از آنجا که در اینجا محتویات فایل در یک آرایه قرار داده شده از foreach استفاده کردهایم، همانطور که گفتیم این حلقه فقط برای آرایهها بکار گرفته میشود.
از آنجا که پس از هر نام یک علامت خط فاصله – قرار دادهایم، پس از رسیدن به انتهای فایل باز هم پس از نام آخر یک علامت – قرار خواهد گرفت. برای جلوگیری از اضافه شدن خط فاصله پس از آخرین نام باید ابتدا بفهمیم که چه زمانی به انتهای فایل رسیدهایم. بدین منظور از کدی مثل کد زیر باید استفاده کنید:
$read = file("names.txt"); $count = count($count); $i = 1; foreach ($read as $line) { echo $line; if($i < $count){ echo " - "; } $i++; } ?>
در کد بالا ابتدا با تابع count اقدام به شمارش تعداد اعضای آرایه read$ کردهایم. همانطور که میدانید آرایه یاد شده در واقع دربرگیرنده محتویات فایل names.txt است. سپس با یک حلقه for تمامی اعضای این آرایه را چاپ میکنیم و در هر بار اجرای حلقه یک واحد به متغیر i$ اضافه میکنیم. این متغیر تعداد خطوط را نگهداری میکند. در شرط حلقه بررسی میکنیم که آیا به آخرین خط فایل یعنی آخرین عضو آرایه read رسیدهایم یا خیر، اگر همچنان به انتهای فایل نرسیده باشیم کاراکتر – در ادامه نام چاپ میشود و اگر به آخرین خط فایل رسیده باشیم از آنجا که در حلقه چنین شرطی را نوشتهایم، پس شرط برای خط آخر برقرار نیست و کاراکتر – پس از نام چاپ نمیشود.
اصول کار با فایلها را نیز در این جلسه یاد گرفتید و امیداوریم مباحث این جلسه نیز مورد رضایت شما واقع شده باشد. در صورتی که هرگونه سوالی در مورد این جلسه دارید لطفا آن را در بخش نظرات اعلام کنید. در جلسات آینده به تکمیل سیستم مدیریت محتوای خود بر اساس آنچه تا کنون آموختهایم خواهیم پرداخت. همچنین پس از تکمیل این سیستم مدیریت محتوا سری جدید آمورش پیاچدی در سطح حرفهایتر را آغاز خواهیم کرد.