[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Как вытащить переменную из функции?
alex455
Как вытащить переменную из функции после того, как функция отработала?
Вот кусок кода:
<?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

Спустя 3 минуты, 47 секунд (19.09.2011 - 18:34) alex455 написал(а):
Спасибо. А static уже не работает?

Спустя 2 минуты, 54 секунды (19.09.2011 - 18:37) inpost написал(а):
alex455
Никогда его не использовал в функции. Если из функции вытягиваешь данные, то всегда через 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 Без функций и классов smile.gif

Спустя 19 секунд (19.09.2011 - 18:58) Winston написал(а):
Цитата (alex455 @ 19.09.2011 - 18:56)
Тут, наверное, лучше класс написать?

Шутишь ?
Для того, чтобы вернуть переменную нужно класс писать ? 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 для чайников и выучи элементарный синтаксис

Спустя 1 минута, 36 секунд (19.09.2011 - 22:32) neadekvat написал(а):
Фигню какую-то советуете.
Автор, учи Си, напишешь модуль для php и будешь его юзать. А то насоветуют сейчас..
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.