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 :: Версия для печати :: Функция
Форумы портала PHP.SU » » Вопросы новичков » Функция

Страниц (1): [1]
 

1. Master_pascal - 11 Января, 2013 - 09:37:53 - перейти к сообщению
Можно я еще спрошу один вопрос
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. function arr_max($arr) // Определяем функцию arr_max принимающую один аргумент
  3. {
  4.  // Входящие данные: Массив
  5.  // Исходящие данные: значение элемента в массиве.
  6.  
  7.   // Устанавливаем значение нулевого элемента как максимального
  8.   $max = $arr[0];
  9.  
  10.   for ($i = 1; isset($arr[$i]); $i++) // для каждого элемента массива
  11.     if ($arr[$i] > $max) // проверяем что больше. Текущее значение или максимум
  12.       $max = $arr[$i]; // Если максимум больше, то меняем максимум на новый
  13.  
  14.     $arr[1] = 95; // Поменяем значение первого элемента массива. Не задумывайтесь почему. Чуть позже увидите.
  15.  
  16.         // функция возвращает результат.
  17.         // Результат в данном случае самое большое число в массиве
  18.     return $max;
  19. }
  20.  
  21. // Закончилось определение функции. Дальше продолжение скрипта.
  22.  
  23.  
  24. $ar1 = array(4, 6, 12, 9, '5', 23);
  25. $ar2 = 'dabcjfutZfgh';
  26.  
  27. echo arr_max($ar1)."<br>\n"; // Выведет 23
  28.  
  29. echo '$ar1[1]'.$ar1[1]; // выведет 6 (а не 95, помните ту загадочную строку функции?). Получается значение не изменилось
  30. // Напомним: в одинарных кавычках значения переменных не подставляются
  31.  
  32. // подумайте над результатами такого вызова:
  33. echo arr_max($ar2);
  34. ?>


почему результатом echo arr_max($ar2) буква - u ?
разве буквы можно сравнивать Ха-ха
это даже не массив
2. armancho7777777 - 11 Января, 2013 - 09:59:25 - перейти к сообщению
Master_pascal пишет:

Вообще-то для данной задачи уже есть встроенная функция max($array)
3. Master_pascal - 11 Января, 2013 - 10:01:29 - перейти к сообщению
armancho7777777 это я с урока взял
4. armancho7777777 - 11 Января, 2013 - 10:03:37 - перейти к сообщению
PHP:
скопировать код в буфер обмена
  1. function arr_max($arr)
  2. {
  3.         $max = 0;
  4.        
  5.         foreach($arr as $v)
  6.         {
  7.                 if ($v > $max)
  8.                 $max = $v;
  9.         }
  10.        
  11.         return $max;
  12. }

(Добавление)
Или ещё проще:
PHP:
скопировать код в буфер обмена
  1. function arr_max($arr)
  2. {
  3.         sort($arr, SORT_NUMERIC);
  4.         return array_pop($arr);
  5. }
5. Master_pascal - 11 Января, 2013 - 10:17:24 - перейти к сообщению
armancho7777777 ладно, спасибо пойду гуглить

 

Powered by ExBB FM 1.0 RC1