#javascript #php #string #integer
#javascript #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
.
Комментарии:
1.
intval — Get the integer value of a variable
, пожалуйста, проверьте здесь > php.net/manual/en/function.intval.php и ваш$window_width
не содержит целочисленного значения2. Вы также обнаружите, что вы смешиваете сценарии на стороне клиента с выполнением на стороне сервера. Например
window.innerWidth
, будет доступно после рендеринга страницы, после чего php уже некоторое время завершен. Таким образом, это значение не будет доступно для него, обнажая что-то вроде ajax и базу данных, которая менее идеальна.3. intval возвращает целочисленное значение. он не преобразует строку в целое число
4. @OwaisArain — вы ошибаетесь, он преобразует строку в целое число, такое как
intval('1')
действительно станет1
, однако<script></script>
не является числом, а затем станет0
5. Я думаю, что у меня это получилось. Большое спасибо!
Ответ №1:
$window_width
содержит string
(не window.innerWidth
), который не может быть преобразован в string
, следовательно 0
, возвращается!
PHP
выполняется (задолго до выполнения), поэтому к нему невозможно получить доступ, используйте для передачи этих данных. sever
JavaScript
window.innerWidth
PHP
AJAX
PHP
Целочисленное значение var при успешном выполнении или 0 при сбое.
Строки, скорее всего, вернут 0, хотя это зависит от крайних левых символов строки. Применяются общие правила приведения целых чисел.
Ответ №2:
$window_width
не может быть 1366, потому что вы смешиваете PHP и Javascript.
PHP выполняется на стороне сервера, в то время как JS находится на стороне пользователя. Это означает, что вы не можете просто использовать значения из JS в PHP.
Комментарии:
1. Для меня это 1366.