Forum Webscript.Ru
Программирование => PHP => Тема начата: Enemy от 30 Сентября 2002, 22:53:29
-
pow($user, $ulevel-1)
когда код в таком виде, пхп возращает ошибку - мол не льзя так "$ulevel-1". Тогда приходится ввести новую переменную, а может можна как то этот error обойти? без новой переменной?
И второй вопрос: есть ли обратная функция функции pow? Типа корень в степени? Если нет, то как мне его найти?
-
1) Должно быть "зя", а не низя.
2) корень стерпени y из x = pow(x,1/y)
-
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:
php
$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:
php
$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.
-
Интересно... Но уроды, конечно.
Однако, это означает, что в вышеописанном примере должно (или может) ругаться на $user а не на $ulevel-1.
-
ну intval($ulevel-1) я пробовал, не работает...
-
Приведи код со строками инициализации передаваемых параметров, типа:
$user=...;
$ulevel=...;
pow($user, $ulevel-1);
-
$user=...;
$ulevel=...;
pow($user, $ulevel-1);
простые int переменные:
$user=2;
$ulevel=3;
pow($user, $ulevel-1);
-
хмм, у меня твой код без проблем работает.
Может баг какой-то
или числа :
$user=0;
$ulevel=0;
pow($user, $ulevel-1);
полностью текст ошибки процититруй
-
У меня аналогично все пучком.
Правда, у меня 4.2.3 а не 4.2.1 - может, уже наладили в ней.
Но у меня работает даже в полностью строковом варианте:
$user="2";
$ulevel="3";
pow($user, $ulevel);
-
Правда, у меня 4.2.3 а не 4.2.1 - может, уже наладили в ней.
тестил на 4.1.3-dev
-
все нормально, сменил алгоритм и тепер это уже не проблема.
все равно всем спасибо