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

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   משתנה בתוך פונקצייה (https://hosts.co.il/forums/showthread.php?t=63595)

SlipY 30-05-08 14:45

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


קוד:

function image() {
    header ("Content-type: image/png");
    $string = substr(md5(time()), 0,5);
    $font = 5;
    $width = 60;
    $height = 22;
    $im = @imagecreate ($width,$height);
    $background_color = imagecolorallocate ($im, 224, 224, 224);
    $text_color = imagecolorallocate($im, 255, 0, 0);
    imagestring ($im, $font, 7, 5,$string, $text_color);
    imagepng ($im);
return $string;
}


Yaniv|Fore.co.il 30-05-08 14:51

return

SlipY 30-05-08 15:03

ציטוט:

נכתב במקור על ידי Yaniv|Fore.co.il (פרסם 637310)
return

שיניתי, עדיין כשאני עושה Echo ל string הוא לא מופיע

Daniel 30-05-08 15:03

YanivFore, הוא כתב בפונקציה return

הסיבה לפי מה שאני רואה זה ש- imagepng ($im);, ברגע שעושים imagepng - זה גומר את הצגת הדף.

SlipY 30-05-08 15:04

ציטוט:

נכתב במקור על ידי MasterT (פרסם 637321)
YanivFore, הוא כתב בפונקציה return

הסיבה לפי מה שאני רואה זה ש- imagepng ($im);, ברגע שעושים imagepng - זה גומר את הצגת הדף.

אז יש דרך לעשות שהפונקצייה תקבל את המשתנה מהדף עצמו ?

DavidBD 30-05-08 15:25

אתה צריך לעשות ECHO לפונקציה עצמה.
או לשים את $string בglobal ואז הוא יהיה זמין בשאר העמוד.

SlipY 30-05-08 15:37

ציטוט:

נכתב במקור על ידי DavidBD (פרסם 637339)
אתה צריך לעשות ECHO לפונקציה עצמה.
או לשים את $string בglobal ואז הוא יהיה זמין בשאר העמוד.

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

ניסיתי ליצור את $string בראש העמוד ואז לשלוח אותו לפונקצייה ככה:
קוד:

        function image($string) {
            header ("Content-type: image/png");
            $font = 5;
            $width = 60;
            $height = 22;
            $im = @imagecreate ($width,$height);
            $background_color = imagecolorallocate ($im, 224, 224, 224);
            $text_color = imagecolorallocate($im, 255, 0, 0);
            imagestring ($im, $font, 7, 5,$string, $text_color);
            imagepng ($im);
        }

אבל זה עדיין לא עובד

fulsyp 31-05-08 21:53

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

function image() {
    
header ("Content-type: image/png");
    
$string substr(md5(time()), 0,5); 
    
$font 5;
    
$width 60;
    
$height 22;
    
$im = @imagecreate ($width,$height);
    
$background_color imagecolorallocate ($im224224224);
    
$text_color imagecolorallocate($im25500);
    
imagestring ($im$font75,$string$text_color);
    
imagepng ($im);
    return 
$string;
}
$image image(); 

או לעשות משתנה גלובאלי...
PHP קוד:

$image "";
function 
image() {
    global 
$image;
    
header ("Content-type: image/png");
    
$string substr(md5(time()), 0,5); 
    
$font 5;
    
$width 60;
    
$height 22;
    
$im = @imagecreate ($width,$height);
    
$background_color imagecolorallocate ($im224224224);
    
$text_color imagecolorallocate($im25500);
    
imagestring ($im$font75,$string$text_color);
    
imagepng ($im);
    
$image $string;


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


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

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