הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   תכנות - מדריכים, code snippets (https://hosts.co.il/forums/forumdisplay.php?f=68)
-   -   [מדריך] PHP - לולאות (https://hosts.co.il/forums/showthread.php?t=38504)

CodeX 23-01-07 13:36

[מדריך] PHP - לולאות
 
לולאות

אוקיי ראיתי שלולאות זה נושא לא מובן להרבה מתכנתים מתחילים, זה סביר, גם אני לא הבנתי מה זה בדיוק, אך כאשר מגילים את הסוד,
זה שימושי מאוד! :)

אז מה זה בעצם לולאה?
לולאה, זה קודם המתבצע כמה פעמים, לפי קביעה מסוימת שלנו, או לפי תנאי.

לשם מה צריך לולאות?
אוקיי, הרבה פונים אלי באייסי שלא יודעים איך לעשות נתונים בשליפה אחת מהמסד, במקום לשלוף מהמסד נתונים אחדים אחדים,
עושים לולאה אחת, וזה מבצע כבר את כל הפעולה!
כן מה ששמעתם!

אם יש לכם 100 רשומות במסד? תשלפו הכל אחד אחד?
עושים לולאה של 3 שורות, ויש לכם שליפה של כל 100 הרשומות!
אז נתחיל? :)

איזה סוגי לולאות קיימות?
בPHP, קיימות 4 סוגי לולאות, for, while, do while, foreach.
כולם עושים את אותה הפעולה, אך בדרכים שונות.

מתחיל מהלולאה הפשוטה ביותר, For
לולאת הFor היא לולאה פשוטה המובנת מ-3 מרכיבים, משתנה, תנאי, ומקדם.
הכוונה היא שאנו קובעים משתנה מסוים, לו יש תנאי, ואז מגיע המקדם שלו,
לאחר מכן פשוט עושים הדפסה.

הלולאה נראת ונכתבת כך:
קוד:

for(מקדם;תנאי;משתנה)
{
הדפסה
}

נגיד ואנו רוצים לעשות לולאה שתספור עד, בוא נגיד אממ.. 79,
נעשה זאת הקביעה של המשתנה (מאיזה מספר להתחיל את הספירה), התנאי (האם 1 יותר גדול / שווה ל79), והמקדם (ימשיך את הלולאה),
לאחר מכן עושים הדפסה והופ, יש לנו ספירה מדהימה!
להלן הדוגמא:
קוד:

for($num=1;$num<=79;$num++)
{
echo "$num,";
}

הלולאה תדפיס לנו את כל המספרים מ-1 ועד 79.

אז הבנתם מה זה לולאה?
קדימה, תכירו עוד סוגי לולאות.


לולאת While
עברנו ללולאה הבאה בשם While, בעצם גם היא כוללת 3 מרכיבים, משתנה, תנאי ומקדם.
אם התנאי הוא אמת, בתוך הלולאה יש הדפסה, ומתחתיה מקדם.

הלולאה נכתבת כך:
קוד:

$num = 1;
while($num <= 210)
{
echo "$num,";
$num++;
}

מה הלולאה תעשה?
תדפיס את כל המספרים ללא יוצא מן הכלל, מ-1 ועד 210.


לולאת Do While
לולאת הDo While מאוד דומה ללולאת הWhile שלמדנו מקודם, רק שהיא שונה בדבר אחד,
הלולאה הזו, קודם מבצעת את הפעולה, ורק אז בודקת את התנאי.

הלולאה נכתבת כך:
קוד:

$num = 1;
do
{
echo "$num,";
}
while (++$num=<210)

נראה לי שתבינו שהלולאה תדפיס שוב, את כל המספרים מ-1 ועד 210.


לולאת Foreach
לולאת הForeach, דומה לחברותיה, אך היא בעצם יותר מיועדת למערכים.
הללואה בעצם עוברת על כל אברי המערך, ובעצם מדפיסה את כל אברי המערך.
היא נעצרת כאשר מגיעה לסוף המערך.
הקוד נכתב להלן:
קוד:

$names = array();
$names = "nitay";
$names = "dor";
$names = "idan";
foreach ($names as $while)
{
echo "$while,";
}

נראה לי שדי ברור מה שעשיתי, עשיתי מערך עם הערכים, nitay, dor, idan.
הלולאה תדפיס את כל הערכים של המערך $names.

ולמי ששואל, למה צריך as $while, זאת שאלה טובה,
PHP רוצה לא ליצור תסבוכות, ולכן הוא שומר את כל המערך, במשתנה חדש.
(זאת לפחות, הסיבה ההגיונית ביותר שחשבתי עליה).

ונגיד אנו רוצים לשלוף את כל הרשומות מהמסד, באיזה לולאה הכי טוב להשתמש?
ת'אמת כולם טובות, אבל הייתי ממליץ להשתמש בWhile.
הכי פשוט לעשות את זה דרכה.

דוגמא לשליפה עם While:
קוד:

$select = mysql_query("SELECT * FROM subject ORDER BY id");
while($row = mysql_fetch_array($select))
{
$id = $row['id'];
$subject = $row['subject'];
echo<<<END
<a href="index.php?p=$id">$subject</a>
END;
}

הלולאה תדפיס לנו את כל הרשומות שבמסד (לפי ההדפסה שלי).


תהינו מהמדריך הקיים, ואל תשכחו!
כל הזכויות שמורות 2007.

ibmod 23-01-07 15:22

תודה

Level-Serv 23-01-07 15:22

נחמד מאוד..

רק כמה תיקונים:
1. לפי דעתי לולאת while הרבה יותר פשוטה מלולאת for (לולאת for זה שדרוג של while)
2. לגבי לולאת do...while רק אחדד את מה שאמרת והוסיף שהיא תמיד תיכנס בפעם הראשונה ובפעמים לאחר מכן זה תלוי בתנאי אם הוא קיים, כלומר התנאי לא משמש האם להיכנס ללואה כמו לולאת while אלא משמש האם לחזור חזרה על הפעולה.
3. אני רק הוסיף ללולאת foreach שיש את הדוגמא:
PHP קוד:

foreach ($arr as $key => $value) {
   echo 
"Key: $key; Value: $value<br>\n";


כלומר מדפיסים גם את האינדקס וגם את הערך של האיבר.

WebProject 23-01-07 21:58

תגיד, בכלל בדקת אם נכתב על זה משהו? כי יש פה מדריך שנכתב על ידי BBMAN ולא רק זה אלא שהמדריך שלו מפורט יותר.

CodeX 24-01-07 13:37

כתבתי את המדריך לפורום אחר, והחלטתי לפרסם גם פה?
כאילו זה אמור להפריע שאני מפרסם מדריכים החוזרים על עצמם?
יש הרבה כאלה.

WebProject 24-01-07 21:11

חח אני לא מבין אותך.. יש כבר מדריך, למה לעזעזל לפרסם? כדי שתראה את הרמה שלך פה? מילא בפורום אחר, אבל באותו פורום?

BlueNosE 24-01-07 21:45

אולי די?
זה ממש לא יפה
הבן אדם השקיע וכתב מדריך
אם אתם לא רוצים לומר תודה אל תדברו.
אבל לנזוף בו?
באמת מגעיל מצידו להכין מדריך ולפרסם פה.

תודה רבה על המדריך,
ידוע לי, אבל בכל זאת תודה על ההשקעה.

Eli-Hai 24-01-07 21:50

כאשר אתה מגדיר מערך, אתה מגדיר אותו כך -
PHP קוד:

$some_array = array(); 

וכדי להזין לו ערכים, אתה מזין -
PHP קוד:

$some_array[] = "value"

תבדוק שוב את הקוד שלך, אני כמעט בטוח שטעית.

LiDooR 25-01-07 23:13

אני זוכר שבהתחלה שלמדתי הסתבחתי קצת עם לולאות.. אבל עכשיו שאני חושב על זה..
זה ממש קל סתם כולם מסתבכים עם זה בהתחלה..

כל הכבוד על כתיבת המדריך.. :)

tnadav 26-01-07 11:13

ציטוט:

נכתב במקור על ידי Eli-Hai (פרסם 411902)
כאשר אתה מגדיר מערך, אתה מגדיר אותו כך -
PHP קוד:

$some_array = array(); 

וכדי להזין לו ערכים, אתה מזין -
PHP קוד:

$some_array[] = "value"

תבדוק שוב את הקוד שלך, אני כמעט בטוח שטעית.

למיטב ידיעתי, אין בעיה בקוד


כל הזמנים הם GMT +2. הזמן כעת הוא 11:55.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ