使用内爆()、连接()或json_encode()将PHP数组传递给Javascript数组

使用内爆()、连接()或json_encode()将PHP数组传递给Javascript数组,php,javascript,arrays,wordpress,Php,Javascript,Arrays,Wordpress,我正在开发Wordpress插件,需要将PHP数组传递给Javascript数组。我尝试过使用join()、inpolde()甚至Json_encode。但是,wordpress没有显示任何值 使用join()时,我使用了以下代码: <?php $php1 = array(1,2,3); ?> <script language='Javascript'> var lat = ["<?php echo join("\", \"", $php1); ?>"];

我正在开发Wordpress插件,需要将PHP数组传递给Javascript数组。我尝试过使用join()、inpolde()甚至Json_encode。但是,wordpress没有显示任何值

使用join()时,我使用了以下代码:

<?php
$php1 = array(1,2,3);

?>
<script language='Javascript'>
var lat = ["<?php echo join("\", \"", $php1); ?>"];
document.write(lat[1]);
</script>

var lat=[“”];
文件编写(lat[1]);
如果在localhost上使用(不带wordpress),上述代码将提供有效的输出。但是,不知何故,它在Wordpress上不起作用。“apache错误日志”显示以下消息:

PHP警告:join()[function.join]:在第129行的\wp content\plugins\Animation\Animation.PHP中传递的参数无效,请参考:

内爆()的情况也是如此。服务器错误日志显示与上述相同的内爆()警告

然后我尝试使用下面的代码进行json_编码:

var lat = <?php echo json_encode($php1); ?>;
var-lat=;
但是没有返回值

编辑:我用于JSON的代码:

<?php
/*
Plugin Name: PHPToJavascript
*/
$arr = array(1,2,3,4,5,6,7,8,9);            //array to pass

add_action('admin_menu','admin_jav');

function admin_jav(){
add_submenu_page('options-general.php','Javarray','Javarray','manage_options','javarray',jav_handler);
}

function jav_handler(){
echo 'Into handler';

?>
<SCRIPT LANGUAGE = 'Javascript'><!--
var sm=<?php echo json_encode($arr); ?>;      //using Json  

document.write(sm[1]);                       //doesnt display any output!!!

</SCRIPT>
<?php
}
?>


更改:

var lat = ["<?php echo join("\", \"", $php1); ?>"];
document.write(lat[1]);
var lat = ["<?php echo join('", "', $php1); ?>"];
document.write(lat[0]);
var lat=[“”];
文件编写(lat[1]);
至:

var lat = ["<?php echo join("\", \"", $php1); ?>"];
document.write(lat[1]);
var lat = ["<?php echo join('", "', $php1); ?>"];
document.write(lat[0]);

var lat=[”变量
$arr
超出范围。如果要使用全局
$arr
变量,需要修改
jav\u handler()
函数以将变量引入局部范围:

function jav_handler(){
    global $arr;
    // ...
但是,最好尽可能避免使用全局变量,因此最好的做法是将函数更改为将数组作为参数,并在调用函数时显式传递它:

function jav_handler($arr){
    // ...
}

jav_handler($arr);
而不是:

var lat = ["<?php echo join("\", \"", $php1); ?>"];
var lat=[“”];
我会尝试:

var lat = "<?php echo json_encode($php1); ?>";
var-lat=”“;

此外,您可能希望使用提供正确JS调试的浏览器。在chrome中,您可以使用
console.log(lat);
查看lat的确切内容

您的意思是,如果您编写
alert();
,什么都不会发生?另外请注意,
language
属性已被弃用,更喜欢使用
type=“text/javascript>“
取而代之。好吧,我使用
document.write()
而不是
alert()
。但是,我只想将数组
$php1
的内容传递给数组
lat
,然后显示
lat
的第一个元素。我使用了
var lat=;document.write(lat[1]);
但什么也没有发生。请尝试var;否则我认为您必须执行var lat=“”;然后将字符串转换为json@solartic,什么?JSON是JavaScript,你的第一句话与另一句无关。@Alex,那么你的问题不是PHP,而是JavaScript。
script
标记是否在
主体
标记内?