2016-10-04 3 views
-2

Это может показаться тривиальным, но intval() возвращается 0 в следующем случае:PHP intval() возвращает 0

$window_width = "<script type='text/javascript'>document.write(window.innerWidth);</script>"; 
$window_width2 = intval($window_width); 
echo $window_width2; 

$window_width будет "1366".

$window_width2 будет 0.

Мне нужно $window_width2 быть integer, а не string.

+0

'intval - получить целочисленное значение переменной', пожалуйста, проверьте здесь> http://php.net/manual/en/function.intval.php , а ваш' $ window_width' не содержит целочисленное значение – ravisachaniya

+0

Вы также обнаружите, что вы смешиваете скрипты на стороне клиента с выполнением команды на стороне. Например, 'window.innerWidth' будет доступен после отображения страницы, после чего точка php уже была завершена на какое-то время. Таким образом, это значение не будет доступно для него, что-то вроде ajax и базы данных, которая менее идеальна. – ArtisticPhoenix

+0

intval возвращает целочисленное значение. он не преобразует строку в целое число –

ответ

0

$window_width является проведение string (не window.innerWidth), которые не могут быть преобразованы в string следовательно 0 возвращается!

PHP выполняется на sever (Путь до JavaScript выполняется), так что невозможно получить доступ window.innerWidth более PHP, используйте AJAX испускать, что данные по PHP.

The integer value of var on success, or 0 on failure.

Строки, скорее всего, возвращаемые 0, хотя это зависит от крайних левых символов строки. Применяются общие правила integer casting.

0

$window_width не может быть 1366, потому что вы смешиваете PHP и Javascript.

PHP выполнен на стороне сервера, в то время как JS находится на стороне пользователя. Это означает, что вы не можете просто использовать значения из JS в PHP.

+0

Это 1366 для меня. –

+0

https://3v4l.org/GSojX – danopz