如何呈现PHP输出以初始化JavaScript中的变量?

I wan to call a PHP function in JavaScript code that echoes out a value:

<?php
function ex()
{
  $num=10;
  echo($num);
} 
echo '<script type="text/javascript">
  function sam_click(clicked)
  {
    var x="<?php ex(); ?>";
    alert(x);
    return false;
  }
</script>'?>

However, it doesn't work. Can you help?

Try this:

<?php
function ex()
{
  $num=10;
  echo($num);
} 
echo '<script type="text/javascript">
  function sam_click(clicked)
  {
    var x="' . ex() . '>";
    alert(x);
    return false;
  }
</script>'?>

Just try with:

...
var x="' . ex() . '";
...

Try echoing only what you need

<?php
function ex()
{
  $num=10;
  echo($num);
} 
?>

<script type="text/javascript">
  function sam_click(clicked)
  {
    var x="<?php ex(); ?>";
    alert(x);
    return false;
  }
</script>
function ex()
{
    $num=10;
    echo $num;
    return $num; // if you want to get JS alert
}
echo '<script type="text/javascript">
function sam_click(clicked)
{
    var x='.ex().';
    alert(x);
    return false;
}
sam_click(); // if you want to get JS alert
</script>';

instead of echoing the $num, return it as a result and then append it in the script part.

<?php
function ex()
{
  $num=10;
  return ($num);
} 
echo '<script type="text/javascript">
  function sam_click(clicked)
  {
    var x="' . ex() . '";
    alert(x);
    return false;
  }
</script>'?>

another solution with heredoc and nowdoc:

<?php

// helper to call functions as nowdoc
// example: {$fn( function() )}
function fn($functionCall) 
{
  return $functionCall;
}
$fn = 'fn';

function ex()
{
  return 20;
}

$js = <<<EOT
<script type="text/javascript">
  function sam_click(clicked)
  {
    var x="{$fn(ex())}";
    alert(x);
    return false;
  }
</script>
EOT;

echo $js;

Find more detail on PHPDoc: