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
Форумы портала PHP.SU :: Версия для печати :: Уроки № 3 - Знакомсво с функциями [2]
Форумы портала PHP.SU » PHP » Уроки php » Уроки № 3 - Знакомсво с функциями

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

16. Druid - 10 Октября, 2010 - 17:28:06 - перейти к сообщению
zardoz
Дейставительно!!! Спасибо за подсказку!!
17. dominican - 30 Октября, 2010 - 12:04:32 - перейти к сообщению
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.  
18. ferrum88 - 09 Декабря, 2010 - 08:50:59 - перейти к сообщению
вот мой код, подкорректируйте
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.
19. Facecontrol - 24 Декабря, 2010 - 17:22:39 - перейти к сообщению
Привет всем,я прочитал ваш урок по функциям,и вообще ничего не могу понять,из-за очень большого кода в примерах.Объясните мне на примерах с использованием меньшего количества кода.А лучше на примере какого нибудь скрипта объясните пример,так понятнее будет.
20. ferrum88 - 25 Декабря, 2010 - 15:37:23 - перейти к сообщению
я сам тока учусь, вечно нет времени, но попробую объяснить, что именно непонятно?
21. alexsheva - 18 Января, 2011 - 21:08:50 - перейти к сообщению
ferrum88 пишет:
что именно непонятно?

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

get_defined_vars

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

array get_defined_vars (void )

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

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

empty

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

int empty (mixed var)

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


Объясните, пожалуйста, пошагово...
22. Andrey_Olegovich - 02 Мая, 2012 - 11:32:16 - перейти к сообщению
Здравствуйте! Мне кажется в тексте программы, а точнее в комментариях к ней есть неточность.
<?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 разве нет?
23. dominican - 02 Мая, 2012 - 14:10:03 - перейти к сообщению
Цитата:
Вместо //12 нужно написать //24 разве нет?

да, 24 будет
24. krump4you - 22 Мая, 2013 - 12:14:58 - перейти к сообщению
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.  

Критика приветствуется
25. EuGen - 22 Мая, 2013 - 12:20:44 - перейти к сообщению
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 в своих программах. Строго никогда. Это поможет в будущем избежать множества проблем.
26. krump4you - 22 Мая, 2013 - 12:26:24 - перейти к сообщению
EuGen пишет:
0! = 1 (математически). Да и потом, если вызвать fakrek(-35) или, например, fakrek('bar') - поведение будет неожиданным.


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

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


В задание такое было, а как по другому я пока не знаю.
27. EuGen - 22 Мая, 2013 - 12:32:22 - перейти к сообщению
Предлагаю просто подумать.
подсказка (Отобразить)
28. krump4you - 22 Мая, 2013 - 13:27:41 - перейти к сообщению
EuGen пишет:
Предлагаю просто подумать.

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

P.S. $iNumber != 0, $iNumber != null, $iNumber != false?
29. DelphinPRO - 22 Мая, 2013 - 13:41:46 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. ($iNumber != 0) and ($iNumber != null) and ($iNumber != false) and ($iNumber != '')


подробнее - читать "приведение типов"
30. EuGen - 22 Мая, 2013 - 13:44:01 - перейти к сообщению
На самом деле в случае, который имеет место быть в функции, приведённой мной, проверка будет исключительно на равенство $iNumber нулю - так как, ввиду проверки типа выше по коду, к моменту исполнения тернарного оператора, $iNumber будет обязательно целым неотрицательным числом.

 

Powered by ExBB FM 1.0 RC1