לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #7  
ישן 02-03-2006, 16:22
  XmAx XmAx אינו מחובר  
 
חבר מתאריך: 22.05.05
הודעות: 250
בתגובה להודעה מספר 5 שנכתבה על ידי DCD שמתחילה ב "תגובה לכולם..."

כמו שאמרו לך - נסה במקום לשאול, זה לוקח בדיוק 10 שניות

ובקשר לאם הפונקציה תעבוד רק בתוך הלולאה, אין לי מושג. אבל אם זה יעבוד - אז זה יציג לך רק את הפעם האחרונה שהלולאה רצה..
תחשוב על זה שלולאה פשוט מריצה את הקוד כמה פעמים, נגיד הקוד הזה:
קוד PHP:
 $i=1;
while(
$i<=2)
{
print 
$i;
   
$i++;


זהה לקוד הזה:
קוד PHP:
 $i=1;
print 
$i;
$i++;
print 
$i;
$i++ 

וכמובן הוא גם עושה בדיקה לתנאי שהושם בלולאה - במקרה כזה צריך להיות שם גם תנאי שבודק כל פעם אן הוא קטן/שווה ל-2 (פשוט לא היה לי כוח לרשום )

אז תחשוב על הערך שנמצא אחרי ההרצה של הקוד הזה ב-$i, הערך יהיה 3 כי הוא מעדכן כל פעם את הערך שלו.
ככה זה יהיה בדיוק בכל מקרה אחר כמו שליפה מבסיס נתונים, הערך שיהיה נגיד ב-$table['row'] יהיה הערך האחרון שהוא שלף מהבסיס נתונים, אי אפשר לגשת אל הערכים הקודמים שהיו כי הם כבר "נדרסו" על ידי הערכים החדשים.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #10  
ישן 03-03-2006, 03:13
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 5 שנכתבה על ידי DCD שמתחילה ב "תגובה לכולם..."

1. אם וכאשר הלולאה תבצע את הסיבוב השני PHP "יהרוג" את ריצת הקוד ויפלוט הודעת שגיאה שהפונקציה כבר הוכרזה. לא ניתן להכריז על פונקציה בעלת שם זהה לפונקציה שהוכרזה.
2. אם הלולאה לא תבצע יותר מסיבוב אחד... בשביל מה הלולאה ?!
3. ניתן גם לעשות תנאי כדי לבדוק אם זה הפעם הראשונה של הלולאה, ורק אז להגדיר את הפונקציה. אך אין דאביליות גדולה מזה, שכן עכשיו ישנם בדיקות מיותרות בכל מחזור, לא יותר פשוט, נח, מתאים ונכון לכתוב את הפונקציה לפני הלולאה ?

לסיכום: זה לא רק מיותר, זה פשוט דאבילי...


ובענין הכרזה על פונקציה בתוך פונקציה:
הפונקציה הפנימית תוכר גם במרחב הגלובלי, אך היא תווצר רק לאחר ריצת הפונקציה שבה היא "מוכרזת", כך שקריאה לפונקציה ה"פנימית" לפני קריאה לפונקציה שיוצרת אותה תגרום לשגיאה.
בנוסף, קריאה נוספת לפונקציה היוצרת עלולה לגרום לשגיאה אם הפונקציה תנסה שוב ליצור את הפונקציה ה"פנימית", לכן לפני ההכרזה על הפונקציה צריך לבצע בדיקה האם הפונקציה כבר קיימת.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #11  
ישן 03-03-2006, 12:22
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
..........
בתגובה להודעה מספר 10 שנכתבה על ידי ישראל K שמתחילה ב "1. אם וכאשר הלולאה תבצע את..."

ציטוט:
1. אם וכאשר הלולאה תבצע את הסיבוב השני PHP "יהרוג" את ריצת הקוד ויפלוט הודעת שגיאה שהפונקציה כבר הוכרזה. לא ניתן להכריז על פונקציה בעלת שם זהה לפונקציה שהוכרזה.


אבל הצלחתי לעשות את זה... זה קרא לפונקציות שבתוך הלולאה while מספר פעמים...

ציטוט:

2. אם הלולאה לא תבצע יותר מסיבוב אחד... בשביל מה הלולאה ?!

למה שהיא לא תבצע יותר מסיבוב אחד? אני רוצה שהיא תבצע ובפועל היא מבצעת יותר מאחד...

ציטוט:

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


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


דרך אגב יש איזהשהי פקודה שמאפשרת לי לקרוא בתוך לולאת while לפונקציה מסויימת פעם אחת בלבד?

נערך לאחרונה ע"י DCD בתאריך 03-03-2006 בשעה 12:45.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #13  
ישן 04-03-2006, 19:23
  ישראל K ישראל K אינו מחובר  
 
חבר מתאריך: 25.08.03
הודעות: 9,114
בתגובה להודעה מספר 11 שנכתבה על ידי DCD שמתחילה ב ".........."

עכשיו יש לי קצת זמן, אז אשתדל לענות לך אחד אחד, ותבין למה הגבתי כך...

1. זה פשוט לא יכול להיות, אלא אם יש לך גירסת PHP משלך...
תריץ את הקוד הבא ותעתיק לנו את הפלט:
קוד PHP:
<?php

for($i=0$i<2$i++)
{
    echo 
"a:$i<br />";

    function 
b(){
        echo 
"b:$i<br />";
    }
}

?>

2. כי כפי שתווכח בסעיף הקודם כשהלולאה מבצעת יותר ממטריצה אחת תגרם שגיאת זמן ריצה.

3. דיברתי על הצהרת פונקציה בתוך לולאה, ולא על הכרזת פונקציה בתוך פונקציה.
כמו שאמרתי אתה יכול לכתוב את הקוד הבא, אבל זה יותר ממיותר:
קוד PHP:
<?php

for($i=0$i<2$i++)
{
    if(
$i == 0)
        function 
b(){
            echo 
"b:$i<br />";
        }

    echo 
$i;
}

?>

פשוט ויעיל הרבה יותר להגדיר את הפונקציה לפני הלולאה.

4. אין פקודה, זה פשוט אפשרי כמו שהראתי ב-3. אך כמו שהמשכתי לטעון שם, למה לא לבצע את זה לפני הלולאה ?
אם בכל זאת תתקל בצורך, תוכל לבדוק את פעולה זו כבר בוצעה. לדוגמא אם מדובר בהכרזה על פונקציה תבדוק אם הפונקציה קיימת, לכל פעולה אחרת אתה יכול פשוט ליצור משתנה שבו תסמן אם פעולה זו בוצעה או לא.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #14  
ישן 06-03-2006, 20:05
  DCD DCD אינו מחובר  
 
חבר מתאריך: 17.05.05
הודעות: 7,321
תוצאות ועוד...
בתגובה להודעה מספר 13 שנכתבה על ידי ישראל K שמתחילה ב "עכשיו יש לי קצת זמן, אז אשתדל..."

בקשר לסעיף 1, הרצתי בדיוק מה שאמרת לי להריץ וזה התוצאות:

ציטוט:

a:0
a:1

Fatal error: Cannot redeclare b() (previously declared in /home/******) in /home/*****/ttt.php on line 7


שכחת אולי לקרוא לפונקציה b ? =\

בכל מקרה, קראתי לפונקציה בצורה הזו:
קוד PHP:
<?php 
for($i=0$i<2$i++) 

    echo 
"a:$i<br />"
    function 
b(){ 
        echo 
"b:$i<br />"
    } 
 
b();

?>


תוצאה:

ציטוט:

a:0
b:
a:1

Fatal error: Cannot redeclare b() (previously declared in /home/******/ttt.php:8) in /home/*******/ttt.php on line 7


אחר כך הוצאתי את הפונקציה b מחוץ ללולאת for בצורה הזו:

קוד PHP:
<?php 
    
function b(){ 
        echo 
"b:$i<br />"
    } 
for(
$i=0$i<2$i++) 

    echo 
"a:$i<br />"

 
b();

?>


וזה הביא לי את זה:

ציטוט:
a:0
b:
a:1
b:


מכאן שזה קרה לפונקציה הזאתי פעמיים....

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


GreenBerret - בסוף הצלחתי לעשות מה שרציתי אבל אני רוצה להבין.

==========================================

תודה על העזרה =)
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 23:10

הדף נוצר ב 0.18 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר