Forum Webscript.Ru

Программирование => PHP => Тема начата: Enemy от 30 Сентября 2002, 22:53:29

Название: func
Отправлено: Enemy от 30 Сентября 2002, 22:53:29
pow($user, $ulevel-1)
когда код в таком виде, пхп возращает ошибку - мол не льзя так "$ulevel-1". Тогда приходится ввести новую переменную, а может можна как то этот error обойти? без новой переменной?
И второй вопрос: есть ли обратная функция функции pow? Типа корень в степени? Если нет, то как мне его найти?
Название: func
Отправлено: PilotV от 01 Октября 2002, 01:12:34
1) Должно быть "зя", а не низя.
2) корень стерпени y из x = pow(x,1/y)
Название: func
Отправлено: rembo от 01 Октября 2002, 05:01:09
PHP manual - User contributions
Цитировать
The examples given above by the documentation writer all use hard-coded numbers. The POW function can be a bit trickier when used with variables.
This is because revisions made to the function after version 4.0.6 move away from the type looseness generally associated with PHP.
For example, the following line of code runs under 4.0.6 but raises a warning ("Invalid argument(s) passed to pow()") under 4.2.1:
 $term2 = 1 / pow(1+$r,$t);
?>
The reason? $t has type text. In 4.0.6 this was silently cast to int, but not in 4.2.1. One way to ensure this line of code works:
 $term2 = 1 / pow(1+$r,intval($t));
?>
Of course the current type of $t could be checked before passing it to POW. However, if PHP is going to go in this direction, it might be easier on programmers to enforce strict typing as in C.
Название: func
Отправлено: PilotV от 01 Октября 2002, 16:09:13
Интересно... Но уроды, конечно.
Однако, это означает, что в вышеописанном примере должно (или может) ругаться на $user а не на $ulevel-1.
Название: func
Отправлено: Enemy от 01 Октября 2002, 17:16:25
ну intval($ulevel-1) я пробовал, не работает...
Название: func
Отправлено: PilotV от 02 Октября 2002, 00:55:14
Приведи код со строками инициализации передаваемых параметров, типа:
$user=...;
$ulevel=...;
pow($user, $ulevel-1);
Название: func
Отправлено: Enemy от 02 Октября 2002, 01:55:58
Цитировать
$user=...;
$ulevel=...;
pow($user, $ulevel-1);


простые int переменные:

$user=2;
$ulevel=3;
pow($user, $ulevel-1);
Название: func
Отправлено: Макс от 02 Октября 2002, 02:33:46
хмм, у меня твой код без проблем работает.
Может баг какой-то

или числа :
$user=0;
$ulevel=0;
pow($user, $ulevel-1);

полностью текст ошибки процититруй
Название: func
Отправлено: PilotV от 02 Октября 2002, 03:19:24
У меня аналогично все пучком.
Правда, у меня 4.2.3 а не 4.2.1 - может, уже наладили в ней.
Но у меня работает даже в полностью строковом варианте:
$user="2";
$ulevel="3";
pow($user, $ulevel);
Название: func
Отправлено: Макс от 02 Октября 2002, 04:09:49
Цитировать
Правда, у меня 4.2.3 а не 4.2.1 - может, уже наладили в ней.
тестил на 4.1.3-dev
Название: func
Отправлено: Enemy от 05 Октября 2002, 16:55:40
все нормально, сменил алгоритм и тепер это уже не проблема.
все равно всем спасибо