Myślisz, że zarabiasz tyle, na ile zasługujesz? Zapraszamy do wzięcia udziału w anonimowej ankiecie.
0

Posiadam poniższy kod:

<?php
    global $max, $elementy_na_stronie;
    $elementy_lacznie = 174;
    $elementy_na_stronie = 10;
    $biezaca_strona = $_GET['strona'];

    $maksymalnie_stron = $elementy_lacznie / $elementy_na_stronie;
    $max = (int) $maksymalnie_stron.'<br />';

    $next_element = $max * $elementy_na_stronie +1;

    echo 'Lacznie '.$elementy_lacznie.' elementow, po '.$elementy_na_stronie.' elementow na strone.<br />';
    echo 'Wybrana strona: '.$biezaca_strona.'<br />';
    echo 'Maksymalnie stron: '.$max.' nastepny element na stronie: '.$next_element.'<br />';

    function wyswietlStrony()
    {
        echo $max;
        echo 'pustka';
        for($i = 1; $i < ($max+1); $i++)
        {
            echo '<a href="index.php?strona='.$i.'">Strona '.$i.'</a><br />';
            if($i == $biezaca_strona)
            {
                echo '<ul>';
                for($j=0;$j < $elementy_na_stronie;$j++)
                {
                    echo '<li>Element '.$j*$biezaca_strona.'</li>';
                }
                echo '</ul>';
            }
        }
    }
    echo 'Test';
    wyswietlStrony();
    echo 'Test2';
?>

Kod jest brzydki, bo testowo-naukowy. Chodzi mi o przekazanie wartości zmiennej $max oraz $elementy_na_stronie do wnętrza funkcji wyswietlStrony(). Wyczytałem, że trzeba wykorzystać global przy deklaracji zmiennych, jednak coś nie działa i nie mogę czytać zmiennych w funkcji.
Jak to przeskoczyć?

flag

2 Answers

4

Już się nie używa global

function wyswietlStrony($max, $element_na_stronie)
{
    ....
}

wyswietlStrony(1,2);

Edit:
Sam kod chyba za wiele Ci nie da - postaram się jakoś "prosto wyjaśnić"...

Do funkcji możesz przekazać dowolną ilość zmiennych - wystarczy tylko je zadeklarować:

dodawanie($parametr1, $parametr2)
{
    return $parametr1 + parametr2;
}

echo dodawanie(1,3); // wyświetli "4"

można przekazać mniej parametrów, jeżeli ustawi się wartości domyślne

superDodawanie($parametr1, $parametr2, $parametr3=0)
{
    return $parametr1 + $parametr2 + $parametr3;
}

echo superDodawanie(1,3); // wyświetli "4"
echo superDodawanie(1,3,5); // wyświetli "9"

jeżeli napiszesz

echo superDodawanie(1);

to funkcja się nie wykona i Cię okrzyczy :)

Mam nadzieje że jasno opisałem :)

link|flag
Dzięki za szybką i zdecydowaną odpowiedź :) – szmergiell Mar 9 at 20:57
0

można to zrobić tak

function wyswietlStrony()
{
    global $max, $elementy_na_stronie;

    ...
}

jednakże jest to zapomniany i nielubiany sposób ponieważ zaciemnia przepływ informacji i nie daje pewności iż zmienne globalne które próbujesz użyć rzeczywiście istnieją.

jak przekazywać parametry do junkcji opisane jest w manualu php

link|flag

Your Answer

Not the answer you're looking for? Browse other questions tagged or ask your own question.