Вот кусок кода:
<?php
function echo_int() {
global $number_of_pages;
echo '<tt>';
for ($i = 1; $i < ($number_of_pages + 1); $i++) {
echo "<a href=\"index.php?page$i\">$i</a> ";
}
echo "<br><br></tt>";
}
?>
Нужно вытащить $i с последним значением, которое ей было присвоено до того как функция завершилась. Пробовал при помощи static (разные способы) - не получается.
Спустя 2 минуты, 6 секунд (19.09.2011 - 18:22) inpost написал(а):
return $i;
Спустя 6 минут, 24 секунды (19.09.2011 - 18:28) alex455 написал(а):
Это добавить после "echo "<br><br></tt>";"?
А как потом достать эту переменную? У меня дальше есть такой фрагмент кода:
А как потом достать эту переменную? У меня дальше есть такой фрагмент кода:
if ($number_of_pages == (int)$number_of_pages) {
echo_int();
} else {
echo_int_plus_one();
}
$new_i = ($i - 1) * 3; // здесь всё стопорится
Спустя 2 минуты, 1 секунда (19.09.2011 - 18:30) inpost написал(а):
да, в самом конце функции.
$var = echo_int(); // В переменную вернётся та переменная, которую ты прописал в return
$var = echo_int(); // В переменную вернётся та переменная, которую ты прописал в return
Спустя 3 минуты, 47 секунд (19.09.2011 - 18:34) alex455 написал(а):
Спасибо. А static уже не работает?
Спустя 2 минуты, 54 секунды (19.09.2011 - 18:37) inpost написал(а):
alex455
Никогда его не использовал в функции. Если из функции вытягиваешь данные, то всегда через return.
Никогда его не использовал в функции. Если из функции вытягиваешь данные, то всегда через return.
Спустя 6 минут, 53 секунды (19.09.2011 - 18:44) bodja написал(а):
Цитата |
А static уже не работает? |
А зачем вам static ?
ЗЫ от echo и global тоже стоит избавлятся,а то вы функции по факту превражаете в
подпрограмму,нечего не принимают-ничего не передают.Просто вызов участка кода.
Спустя 12 минут, 16 секунд (19.09.2011 - 18:56) alex455 написал(а):
Тут, наверное, лучше класс написать?
Спустя 1 минута, 24 секунды (19.09.2011 - 18:57) inpost написал(а):
alex455
Тут лучше подряд всё вывести
Без функций и классов
Тут лучше подряд всё вывести
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
![smile.gif](http://phpforum.ru/html/emoticons/smile.gif)
Спустя 19 секунд (19.09.2011 - 18:58) Winston написал(а):
Цитата (alex455 @ 19.09.2011 - 18:56) |
Тут, наверное, лучше класс написать? |
Шутишь ?
Для того, чтобы вернуть переменную нужно класс писать ?
![blink.gif](http://phpforum.ru/html/emoticons/blink.gif)
Спустя 7 минут, 13 секунд (19.09.2011 - 19:05) bodja написал(а):
Цитата |
Тут, наверное, лучше класс написать? |
Если вернуть одну то можно ретурном обойтись.
Если несколько то стоит класс написать,так как в пхп похоже нет
типа typedef struct как на Си,
еще видел способы возврата через массив,так как в пхп массивы не типизованы,
но мне кажется это не очень красивым решением,хоть и вполне приемлемым.
Спустя 1 минута, 40 секунд (19.09.2011 - 19:07) vital написал(а):
Цитата (bodja @ 19.09.2011 - 18:05) | ||
Если вернуть одну то можно ретурном обойтись. Если несколько то стоит класс написать,так как в пхп похоже нет типа typedef struct как на Си, еще видел способы возврата через массив,так как в пхп массивы не типизованы, но мне кажется это не очень красивым решением,хоть и вполне приемлемым. |
Это вполне нормальный подход - вернуть массив. (а еще можно юзать передачу по ссылке &, или глобальные переменные, тьфу-тьфу)
Но вообще верно, в любом мало-мальски нормальном проекте - надо юзать ООП.
Спустя 10 минут, 30 секунд (19.09.2011 - 19:17) caballero написал(а):
Цитата |
Тут, наверное, лучше класс написать? |
Класом тут не обойдешся - надо выучить как минимум полдесятка паттернов. Начни с абстрактных классов и интерфейсов. Как разберешся с MVC сможешь переменные с функций возвращать одной левой.
Спустя 1 час, 18 минут, 26 секунд (19.09.2011 - 20:36) alex455 написал(а):
Цитата (bodja @ 19.09.2011 - 19:44) |
А зачем вам static ? ЗЫ от echo и global тоже стоит избавлятся,а то вы функции по факту превражаете в подпрограмму,нечего не принимают-ничего не передают.Просто вызов участка кода. |
Да, смысл был в том, чтобы сделать так две подпрограммы, которые неудобно выглядят в блоке if. А как по ссылке вытащить переменную? Они же всё равно в разных областях видимости. И по массивам покажите, please.
Спустя 1 час, 55 минут, 3 секунды (19.09.2011 - 22:31) caballero написал(а):
делаеш массив (это тоже перменная если ты не догадался) напихиваешь туда чего нужно и возвращаешь через return.
Прежде чем употреблять слова типа статик и область видимости - возьми PHP для чайников и выучи элементарный синтаксис
Прежде чем употреблять слова типа статик и область видимости - возьми PHP для чайников и выучи элементарный синтаксис
Спустя 1 минута, 36 секунд (19.09.2011 - 22:32) neadekvat написал(а):
Фигню какую-то советуете.
Автор, учи Си, напишешь модуль для php и будешь его юзать. А то насоветуют сейчас..
Автор, учи Си, напишешь модуль для php и будешь его юзать. А то насоветуют сейчас..