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 7

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 обратно на сервер, чтобы использовать их на стороне сервера тоже.