settype В функции ошибка либо подводные камни

Статус
В этой теме нельзя размещать новые ответы.

Dimp

Guest
settype В функции ошибка либо подводные камни

Кто-нибудь может объяснить почему код

PHP:
$var = 'ddd';
$type = settype($var, 'int');

echo 'Var: ' . $var . '  <br>  ResultConv: '. $ResultConv. '  <br>  ';

echo 'TypeVar: ' .gettype($var). '  <br>  TypeResultConv'. gettype($ResultConv);
дает вывод

Var: 0
ResultConv: 1
TypeVar: integer
TypeResultConv: boolean

Хотя по мануалу и здравой логике должен

Var: 0
ResultConv: 0
TypeVar: integer
TypeResultConv: boolean

Почему??? Для проверки дал число:

PHP:
$var = 444444444444444444;
$ResultConv = settype($var, 'int');

echo 'Var: ' . $var . '  <br>  ResultConv: '. $ResultConv. '  <br>  ';

echo 'TypeVar: ' .gettype($var). '  <br>  TypeResultConv: '. gettype($ResultConv);
получил:

Var: 293717760
ResultConv: 1
TypeVar: integer
TypeResultConv: boolean

Всё верно, но почему вопреки мануалу функция settype возвращает TRUE в любом случае, даже для массивов? Что в PHP 5.02, что в PHP 4.3.10.
 

GeT

Новичок
PHP:
$type = settype($var, 'int');
В твоем случае надо поправить на
PHP:
$ResultConv = settype($var, 'int');
 

Dimp

Guest
GeT
BRat
Хотелось бы увидеть ответы программистов PHP - в комментариях на сайте PHP содержится ошибка

PHP:
$agentnum = settype($agentnum, "int");
echo $agentnum; // will show up as 1 instead of 7!
Вам не смешно видеть такие ляпы? Хотелось бы компетентного ответа.

-~{}~ 02.03.05 07:53:

GeT
тебя не смущает знак & в settype ( mixed &var, string type )? Поэтому твой ответ некомпетентен.
Хотелось бы увидеть мнение профессионалов - когда же функция Returns TRUE on success or FALSE on failure.
 

BRat

o_0
интересно где ты ляп усмотрел.

Считай это особенностью работы settype..и просто помни про неё.
 

Dimp

Guest
BRat
повторюсь - тебя не смущает знак & в settype ( mixed &var, string type )? Поэтому твой ответ некомпетентен. Хотелось бы увидеть мнение профессионалов - когда же функция Returns TRUE on success or FALSE on failure.
 

rotoZOOM

ACM maniac
Dimp
PHP:
$type = settype($var, 'int'); 

echo 'Var: ' . $var . '  <br>  ResultConv: '. $ResultConv. '  <br>  ';
1. Где ты используешь переменную $type ?

[cite]
Значение определяется по начальной части строки. Если строка начинается с верного числового значения, будет использовано это значение. Иначе значением будет 0 (ноль).
[/cite]

Вывод - преобразование строки в число всегда будет давать TRUE, только если строка невалидная - то число это будет 0.
 

Dimp

Guest
И преобразование массива в число тоже TRUE, и объекта, что в 5, что в 4 PHP, когда она же она всё-таки говорит FALSE ?!

Смирюсь с этим, напишу кучу кода (из-за 0) для нормального завершения работы системы в случае не такого типа переменной.
Но хотелось бы знать смысл фразы Returns TRUE on success or FALSE on failure.
 

Dimp

Guest
1. Где ты используешь переменную $type ?
Нигде не использую - это я для примера - просто я прочитав мануал реализовал это в виде метода - который fatal error в случае не того типа переменной, а потом оказалось, что ф-я ведет себя странно - никогда не даёт FALSE, а всегда TRUE при любом типе переменной (объект, массив, строка).
 

tony2001

TeaM PHPClub
>а потом оказалось, что ф-я ведет себя странно - никогда не даёт FALSE,
>а всегда TRUE при любом типе переменной (объект, массив, строка).
а как он должна себя вести?
падать на каждом шагу?
возвращаться false вместо true?

хинт:
PHP:
var_dump(settype($a, 'bla-bla'));
Dimp
Хотелось бы увидеть ответы программистов PHP - в комментариях на сайте PHP содержится ошибка

$agentnum = settype($agentnum, "int");
echo $agentnum; // will show up as 1 instead of 7!

Вам не смешно видеть такие ляпы? Хотелось бы компетентного ответа.
купи себе англо-русский словарь - он даёт очень компетентные ответы.

тебя не смущает знак & в settype ( mixed &var, string type )? Поэтому твой ответ некомпетентен.
фитилёк прикрути.
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху