PHP преобразование строки в целое число не работает с этим кодом
Все идет правильно, пока не преобразуется строка в целое число. После преобразования значение становится равным 0. Почему?
<script type="text/javascript">
var offset = new Date().getTimezoneOffset(); //get client timezone differance with UTC
offset *= -1; // change sign
offset *= 60; // convert into second
console.log(offset);
</script>
<?php
echo "<br/><br/>";
$a = "<script>document.write(offset)</script>"; //getting value in string
echo $a; // this works and print : 19800
echo "<br/>";
settype($a, "integer");
echo $a; // print 0
?>
1 ответ:
Вы задаете некоторый HTML (с JavaScript) код в переменной
$a
. Это недопустимое число! Поэтому PHP не может преобразовать не числовую строку в число / целое число:$a = "<script></script>"; var_dump($a); //string(17) "<script></script>" settype($a, "integer"); var_dump($a); //int(0)
Код работает, если вы задаете числовое значение в виде строки (или целого числа) на
$a
:$a = "19800"; var_dump($a); //string(5) "19800" settype($a, "integer"); var_dump($a); //int(19800)
Примечание: вы не можете напрямую назначить результат из JavaScript переменной PHP, потому что код JavaScript выполняется на стороне клиента, а PHP выполняется на стороне сервера (до JavaScript). Вы можете использовать AJAX для отправки значений из JavaScript обратно на сервер, чтобы использовать их на стороне сервера тоже.