简单的PHP网页中有趣的输出

Here is a very simple PHP page with one javascript function in it. I am seeing the output differently. I am not able to understand why is it behaving that way.

In the code below, x echoes as 012012, but when I pass it into a javascript function and display it in an innerHTML, it displays differently as 5130 ??!!

Can anyone help ?

<?php
    $x= date("mY");
    echo $x;
?>
<html>
    <head>
        <script>
            function myfunc1(y)
            {
                div1 = document.getElementById("mydiv1")
                div1.innerHTML = y;
            }
        </script>
    </head>
    <body <?php echo "onload='myfunc1(".$x.")'>";?>
    <div id="mydiv1" style="background:#efefef;border:1px solid green;height:100px;width:100px;text-align:center">
    </div>
    </body>
</html>

HTML output

012012<html>
    <head>
        <script>
            function myfunc1(y)
            {
                div1 = document.getElementById("mydiv1")
                div1.innerHTML = y;
            }
        </script>
    </head>
    <body onload='myfunc1(012012)'>    <div id="mydiv1" style="background:#efefef;border:1px solid green;height:100px;width:100px;text-align:center">
    </div>
    </body>
</html>

HTML output (screenshot) Screenshot

This is happening because 012012 is being treated as an int. But, since it starts with 0, JavaScript treats it as base 8 (octal), and therefore converts it to 5130.

You need to wrap 012012 in quotes, so JavaScript treats it as a string. Also, I suggest only using PHP to echo the value you need, not the entire function call. Makes it slightly easier to debug.

<body onload="myfunc1('<?php echo $x;?>')">

Because a number prefixed with a 0 is treated as octal by javascript.

<body <?php echo "onload='myfunc1(".$x.")'>";?>

should be

<body <?php echo "onload='myfunc1(".$x.")'>";?>>

The body tag is not closed

Use Smarty, is a framework template PHP!

PHP code:

<?php
    $foo = date('Y');
?>

Simple Print PHP Code

<body onload="myFunctionJS('<?php echo $foo;?>')">

Simple Tags PHP(It is not recommended)

<body onload="myFunctionJS('<?=$foo;?>')">

USE SMARTY TEMPLATE FRAMEWORK

Smarty Template Framework(PHP Code):

<?php
    $smarty = new Smarty;
    $var = date('Y');
    $smarty->assign( 'foo' , $var );
?>

Smarty Template Framework(Template Code):

<body onload="myFunctionJS('{$foo}')">