Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Уроки № 3 - Знакомсво с функциями [2]

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (3): « 1 [2] 3 » 

> Описание: Уроки php
Druid
Отправлено: 10 Октября, 2010 - 17:28:06
Post Id



Новичок


Покинул форум
Сообщений всего: 14
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




zardoz
Дейставительно!!! Спасибо за подсказку!!
 
 Top
dominican
Отправлено: 30 Октября, 2010 - 12:04:32
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Druid пишет:

PHP:
скопировать код в буфер обмена
  1.  
  2. //Напишите рекурсивную функцию вычисления факториала.
  3. function factor_rec ($num, $all = 1, $next = 2)
  4. {
  5.     if ($num < 1) return false;
  6.     elseif ($num >= 2) return factor_rec ($num - 1, $all * $next, $next + 1);
  7.     elseif ($num = 1) return $all;
  8. }
  9. echo factor_rec (5);


Вычислить n-факториал можно и таким способом:
PHP:
скопировать код в буфер обмена
  1.  
  2. function factorial($n, $res=1) //факториал
  3.     {
  4.         if ($n == 1) return $res;
  5.         if ($n == 0) return 1;
  6.         return factorial($n - 1, $res*$n);
  7.     }
  8. echo factorial(10);  
  9.  
 
 Top
ferrum88
Отправлено: 09 Декабря, 2010 - 08:50:59
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Апр. 2010  


Помог: 0 раз(а)




вот мой код, подкорректируйте
PHP:
скопировать код в буфер обмена
  1. //Напишите функцию, которая ищет минимум массива и его индекс, чтобы и с индексом и с самим минимумом можно было работать в основной программе.
  2. function mas($n)
  3.  
  4. {  
  5. global $min2, $min;  
  6. $min=$n[0];
  7. foreach($n as $k2=>$k)
  8. {if($k<=$min)
  9.   {$min=$k;$min2=$k2;}
  10. }
  11. return $min;
  12. }
  13. $b=array(1,2,3,4,-7,-23,2,6);
  14.  
  15. echo mas($b)." - элемент<br>$min2 - индекс";


по второму, лучший вариант похоже у dominican

я тут ошибки в уроке нашел:
в 3 посте, 3 пример, 13 строчка var=24 а не 12, исправьте пожалуйста.
в 4 посте, 2 пример, 7 строчка, возвращает 0, а не 1.

(Отредактировано автором: 09 Декабря, 2010 - 09:06:33)



-----
<?php?>
 
 Top
Facecontrol
Отправлено: 24 Декабря, 2010 - 17:22:39
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Нояб. 2010  


Помог: 0 раз(а)




Привет всем,я прочитал ваш урок по функциям,и вообще ничего не могу понять,из-за очень большого кода в примерах.Объясните мне на примерах с использованием меньшего количества кода.А лучше на примере какого нибудь скрипта объясните пример,так понятнее будет.
 
 Top
ferrum88
Отправлено: 25 Декабря, 2010 - 15:37:23
Post Id


Новичок


Покинул форум
Сообщений всего: 20
Дата рег-ции: Апр. 2010  


Помог: 0 раз(а)




я сам тока учусь, вечно нет времени, но попробую объяснить, что именно непонятно?


-----
<?php?>
 
 Top
alexsheva
Отправлено: 18 Января, 2011 - 21:08:50
Post Id


Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Янв. 2011  


Помог: 0 раз(а)




ferrum88 пишет:
что именно непонятно?

Например, есть сайт со страницей Функции работы с данными
Не могу правильно написать ни одной из простейших функций. А те примеры, что есть вообще не работают.
Ну вот взять хотя-бы начало
Цитата:
Переменные
Манипуляции с переменными

get_defined_vars

Получение перечисления всех доступных переменных

array get_defined_vars (void )

Возвращает многомерный ассоциативный массив, содержащий ВСЕ переменные, доступные сценарию.

См. также: get_defined_functions().

empty

Проверка, имеет ли переменная значение

int empty (mixed var)

Возвращает FALSE, если переменная имеет непустое или отличное от нуля значение. Иначе возвращает TRUE. Фактически функция проверяет, имеет ли переменная значение, которое может быть приравнено к 0, то есть: (var==0).


Объясните, пожалуйста, пошагово...
 
 Top
Andrey_Olegovich
Отправлено: 02 Мая, 2012 - 11:32:16
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Здравствуйте! Мне кажется в тексте программы, а точнее в комментариях к ней есть неточность.
<?PHP
function func(&$var1, &$var2)
{
$res = $var1 + $var2;
$var2 = $var2 * 2;
$var1 = $var1 * $var2;
return $res;
}
$a = 3;
$b = 4;
echo func($a, $b); // 7
echo $a; // 12
echo $b; //8
?>


Вместо //12 нужно написать //24 разве нет?
 
 Top
dominican
Отправлено: 02 Мая, 2012 - 14:10:03
Post Id


Новичок


Покинул форум
Сообщений всего: 2
Дата рег-ции: Окт. 2010  


Помог: 0 раз(а)




Цитата:
Вместо //12 нужно написать //24 разве нет?

да, 24 будет
 
 Top
krump4you
Отправлено: 22 Мая, 2013 - 12:14:58
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2013  
Откуда: Днепропетровск, Украина


Помог: 0 раз(а)




4 задание можно ещё проще сделать:
PHP:
скопировать код в буфер обмена
  1.  
  2. function fakrek($n)
  3. {
  4.         if ($n==0) return false;
  5.         if ($n==1) return 1;
  6.         return ($n*fakrek($n-1));
  7. }
  8. echo fakrek(6);
  9.  

А третье ковырял ковырял - получилось смешно, но вроде работает:
PHP:
скопировать код в буфер обмена
  1.  
  2. function arr_min($el)
  3. {
  4.         global $min, $k;
  5.         $min = $el[0];
  6.         $k = 0;
  7.         for ($key=0; isset($el[$key]); $key++)
  8.         {
  9.         if ($min > $el[$key])
  10.                           {
  11.                           $min=$el[$key];
  12.                           $k=$key;
  13.                           }
  14.         }      
  15.          return $min;
  16. }
  17. $ar1 = array (0=>11, 1=>3, '2','0.000012', 2=>6, 3=>8798, -91, 'a', '0,1', 5, '-8');
  18. echo arr_min($ar1)."\n";
  19. echo $k;
  20.  

Критика приветствуется
 
 Top
EuGen Администратор
Отправлено: 22 Мая, 2013 - 12:20:44
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




krump4you пишет:
function fakrek($n)
{
if ($n==0) return false;
if ($n==1) return 1;
return ($n*fakrek($n-1));
}
echo fakrek(6);

0! = 1 (математически). Да и потом, если вызвать fakrek(-35) или, например, fakrek('bar') - поведение будет неожиданным.

По поводу нахождения минимума (да и вообще подхода) - не используйте global в своих программах. Строго никогда. Это поможет в будущем избежать множества проблем.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
krump4you
Отправлено: 22 Мая, 2013 - 12:26:24
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2013  
Откуда: Днепропетровск, Украина


Помог: 0 раз(а)




EuGen пишет:
0! = 1 (математически). Да и потом, если вызвать fakrek(-35) или, например, fakrek('bar') - поведение будет неожиданным.


Т.е. первое условие нужно сменить на '<' ? )
P.S. По крайней мере эксепшн пропал )

EuGen пишет:
По поводу нахождения минимума (да и вообще подхода) - не используйте global в своих программах. Строго никогда. Это поможет в будущем избежать множества проблем.


В задание такое было, а как по другому я пока не знаю.

(Отредактировано автором: 22 Мая, 2013 - 12:30:42)

 
 Top
EuGen Администратор
Отправлено: 22 Мая, 2013 - 12:32:22
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Предлагаю просто подумать.
подсказка (Отобразить)


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
krump4you
Отправлено: 22 Мая, 2013 - 13:27:41
Post Id



Новичок


Покинул форум
Сообщений всего: 3
Дата рег-ции: Апр. 2013  
Откуда: Днепропетровск, Украина


Помог: 0 раз(а)




EuGen пишет:
Предлагаю просто подумать.

Супер!
Только как на нашем языке звучит последняя строка?
если $iNumber то?
(какое именно условие? в ифе будет выглядеть как if($iNumber)?)
что проверяет ? Не понял

P.S. $iNumber != 0, $iNumber != null, $iNumber != false?

(Отредактировано автором: 22 Мая, 2013 - 13:35:42)

 
 Top
DelphinPRO
Отправлено: 22 Мая, 2013 - 13:41:46
Post Id



Активный участник


Покинул форум
Сообщений всего: 7187
Дата рег-ции: Февр. 2012  


Помог: 353 раз(а)




PHP:
скопировать код в буфер обмена
  1. ($iNumber != 0) and ($iNumber != null) and ($iNumber != false) and ($iNumber != '')


подробнее - читать "приведение типов"

(Отредактировано автором: 22 Мая, 2013 - 13:42:43)



-----
Чем больше узнаю, тем больше я не знаю.
 
 Top
EuGen Администратор
Отправлено: 22 Мая, 2013 - 13:44:01
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




На самом деле в случае, который имеет место быть в функции, приведённой мной, проверка будет исключительно на равенство $iNumber нулю - так как, ввиду проверки типа выше по коду, к моменту исполнения тернарного оператора, $iNumber будет обязательно целым неотрицательным числом.


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Страниц (3): « 1 [2] 3 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Уроки php »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB