[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: начало работы с function
m4a1fox
Добрый день уважаемые эксперты. Вот пришла пора познакомиться мне с function. Но дело в том что не знаю с чего начать. Просто нужен пример как это делается, а дальше я сам. Вот собственно код который хочу перевести в функция.

$date_q = $author_ind['date'];
$date=explode("-", date($date_q));
switch ($date[1]){
case 1: $m='января'; break;
case 2: $m='февраля'; break;
case 3: $m='марта'; break;
case 4: $m='апреля'; break;
case 5: $m='мая'; break;
case 6: $m='июня'; break;
case 7: $m='июля'; break;
case 8: $m='августа'; break;
case 9: $m='сентября'; break;
case 10: $m='октября'; break;
case 11: $m='ноября'; break;
case 12: $m='декабря'; break;
}

/////////месяй на руссом языке в $sg

$date_add = $date[2].' '.$m.' '.$date[0];


вот вывод готовой переменной
 '.$date_add.'

А вот запрос к БД

$query_author = mysql_query("SELECT date
"
) or die ("Ошибка -". mysql_error());
while($author_ind=mysql_fetch_assoc($query_author))
{

Прошу помощи в плане подсказок. Хотя б с чего начать? Сам хочу научится. Не прошу за меня расписывать функцию... Прошу указать направление. Спасибо.



Спустя 27 минут, 10 секунд (29.03.2011 - 15:51) inpost написал(а):
php.net и читай про функции =) В чём проблема? А ещё лучше скачай учебник Котерова, там всё классно про функции расписано.

Спустя 1 минута, 24 секунды (29.03.2011 - 15:52) Trianon написал(а):
m4a1fox
если бы Вы от switch перешли бы к массиву, пользы было бы больше.

Спустя 19 минут, 16 секунд (29.03.2011 - 16:11) Invis1ble написал(а):
Точно, а то такая простыня )

Спустя 50 минут, 28 секунд (29.03.2011 - 17:02) Guest написал(а):
Trianon
Это понятно. Но приходится изучать php по мере возникновения вопросов.

Спустя 43 минуты, 54 секунды (29.03.2011 - 17:46) Invis1ble написал(а):
Все очень просто: сначала идет ключевое слово function, затем имя функции, далее в скобках перечисляются аргументы, которые будет принимать твоя функция:
function func($arg)
{
}

В тело функции помещаешь свой код, вкотором используешь переданные аргументы:
function getHello($username)
{
return 'Привет, ' . $username . '!';
}

echo getHello('Вася');

return возвращает результат выполнения функции в "основной" код. Также стоит заметить, что в теле функции существует своя область видимости, поэтому в ней видны только глобальные переменные, а в "основном" коде, в свою очередь, не будут видны переменные, используемые в функции (т.е. они локальные).
Вот и все. Тоже самое можно было прочесть в книжках или мануале.

Спустя 38 минут, 4 секунды (29.03.2011 - 18:24) m4a1fox написал(а):
Invis1ble
Спасибо конечно. Но это я прочитал. Уже прочитал всю главу Котерова про функции, эксперементировал... но так ничего и не получилось sad.gif Суть проблемы в том, что не могу понять как связать ее с БД.

Спустя 12 минут, 8 секунд (29.03.2011 - 18:36) minok94 написал(а):
Если хочешь нормально разобраться, то учись на http://irbis-team.com/15 Там есть описание запросов к БД внутри функций и еще много чего...

Спустя 11 минут, 57 секунд (29.03.2011 - 18:48) m4a1fox написал(а):
Вот допустим такой код

$result = mysql_qeury("SELECT * FROM table1");
while (mysql_fetch_assocc($result))
{
echo 'Имя' .$query['name'];
}

это вывод в циклу. Понятно. Далее такая функция

function resultItems()
{
$text = "";
for($name as $v=>$k)
{
if($ch === selected)
$text .= <option $ch name='$k'>$v</option>; else $ch = '';
}
return $text;
}


И далее так

<select name='you'>
<
option name='$k'><?php echo resultItems($names)?></option>
</
select>

В общем суть такова. Что в книжке он перебирает массив. Вот на нем я слегка и заступарился. Не могу понять как мне из БД в цикле вытащить массив данных. Дабы можно было его применить после. Массив в книге выглядит так

$names = array ("1" => "a", "2" => "b", "3" => "c");

Я как бы суть понимаю... Но все равно не могу докумекать.

P.S. Прошу прощения за синтаксис в коде. Так как пишу по памяти.

Спустя 8 минут, 31 секунда (29.03.2011 - 18:56) pak написал(а):

$date_q = $author_ind['date'];

function forDate($d) {
$date = explode("-", $d);
$month = array(
'01' => 'января',
'02' => 'февраля',
'03' => 'марта',
'04' => 'апреля',
'05' => 'мая',
'06' => 'июня',
'07' => 'июля',
'08' => 'августа',
'09' => 'сентября',
'10' => 'октября',
'11' => 'ноября',
'12' => 'декабря'
);
foreach($month as $k => $v) {
if($k == $date[1]) return $date_add = $date[2].' '.$v.' '.$date[0];
}
}

echo forDate($date_q);

Спустя 7 минут, 12 секунд (29.03.2011 - 19:03) Invis1ble написал(а):
Цитата
Не могу понять как мне из БД в цикле вытащить массив данных.

точно также, как ты это делаешь вне функции. Массив с полученными из БД данными возвращаешь с помощью return

Спустя 4 минуты, 37 секунд (29.03.2011 - 19:08) m4a1fox написал(а):
pak
Спасибо. Работает. Сижу сейчас и разбираюсь :). Но можете объяснить человеческим языком вот эти 2 строчки

foreach($month as $k => $v)
{
if($k == $date[1])
return $date_add = $date[2].' '.$v.' '.$date[0];
}

Или поправьте меня, если бред говорю. Насколько я понимаю, это означает, что $k = число месяца (от 1 до 12), а $v = его значение (от января до декабря). То есть в $k - только числа, а в $v - только строки. Тоесть по суть это разбивает массив $month. Так?

Спустя 2 часа, 30 минут, 39 секунд (29.03.2011 - 21:39) KonstantinK написал(а):
Правильнее сказать перебирает значения массива $month

Спустя 11 минут, 2 секунды (29.03.2011 - 21:50) PiratXXX написал(а):
m4a1fox


foreach($month as $k => $v)


помню помню тож в новинку было.

получаеться такая фишка в foreach подаеться массив $month, и foreach проходит по массив(типа как while), и при каждом проходе он получает следующее '01' => 'января'(ну т.д.) и когда он это получает он его разбирает на '01' и 'января' т.е. на ключ и значение (что в твоем случае задаеться так: as $k => $v)
следовательно $k будет 01 а переменная $v будет января.
ну вот и все! а дальше просто использоюшь эти переменные внутри foreach.

Спустя 1 минута, 34 секунды (29.03.2011 - 21:51) Invis1ble написал(а):
m4a1fox
Итого: изучай массивы, потом уже за функции берись smile.gif

Спустя 6 минут, 55 секунд (29.03.2011 - 21:58) PiratXXX написал(а):
Invis1ble

да ладно я помню, по началу использовал то что не понимал, а потом приходило время и понимал.)

Спустя 5 минут, 41 секунда (29.03.2011 - 22:04) Trianon написал(а):
pak
Цитата
foreach($month as $k => $v) {
if($k == $date[1]) return $date_add = $date[2].' '.$v.' '.$date[0];

Это что за ужас?
Зачем здесь цикл вообще?
return $date_add = "$date[2] {$month[$date[1]]} $date[0]";

Спустя 1 час, 3 минуты, 31 секунда (29.03.2011 - 23:07) m4a1fox написал(а):
Trianon
Да не вопрос. Только если не сложно - объясните пожалуйста.

Спустя 25 минут, 40 секунд (29.03.2011 - 23:33) inpost написал(а):
m4a1fox
function helloWorldCreate ($var)
{
$var = "Hello World, dear ".$var;
return $var;
}
$name = 'm4a1fox';
$name = helloWorldCreate($name);
echo $name;


Упрощенный вид:
function helloWorldCreate (&$var)
{
$var = "Hello World, dear ".$var;
}
$name = 'm4a1fox';
helloWorldCreate($name);
echo $name;


Или ещё проще:

function helloWorldCreate ($var)
{
return "Hello World, dear ".$var;
}
$name = 'm4a1fox';
echo helloWorldCreate($name);

Спустя 5 минут, 2 секунды (29.03.2011 - 23:38) Trianon написал(а):
m4a1fox
Смотрим var_dump($date);
и var_dump($month[$date[1]]);
Если что-то осталось неясным - задаем вопросы.
Быстрый ответ:

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