PHP数组到jQuery选项

PHP数组到jQuery选项,php,jquery,Php,Jquery,我正在创建一个使用jQuery脚本的Wordpress插件。我创建了一个PHP数组,其中包含以下选项: $settings=array('setting1'=>'value1','setting2'=>'value2','setting3'=>10) 我现在打算使用foreach循环项目并按如下方式打印: foreach($settings as $setting => $value) { if (is_string($value)) { $value = "'" . $value .

我正在创建一个使用jQuery脚本的Wordpress插件。我创建了一个PHP数组,其中包含以下选项:

$settings=array('setting1'=>'value1','setting2'=>'value2','setting3'=>10)

我现在打算使用foreach循环项目并按如下方式打印:

foreach($settings as $setting => $value) {

if (is_string($value)) { $value = "'" . $value . "'"; }
$output .= $setting . ':' . $value .',';
}

这会让我最终得到:

(window).load(function() {
$('#widget').myWidget({
    setting1:'value1', 
    setting2:'value2', 
    setting3:10})
在当前设置中,最后一个条目的末尾有一个“,”(多了一个),这意味着我得到了一个Javascript错误,所以我需要删除它

总而言之,我感觉我在做一些非常肮脏的事情(包括is_字符串检查),我想知道是否有一种巧妙的方法来处理这个问题?

你试过了吗

文档中的示例:

<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

echo json_encode($arr);
?> 
你试过了吗

文档中的示例:

<?php
$arr = array ('a'=>1,'b'=>2,'c'=>3,'d'=>4,'e'=>5);

echo json_encode($arr);
?> 
如果您使用的是PHP>=5.2,则有一个函数。如果您使用的是PHP>=5.2,则有一个函数,您应该使用它。它为你做了所有肮脏的工作

(window).load(function() {
    $('#widget').myWidget(
        <?php echo json_encode($settings); ?>
    );
}
(窗口)。加载(函数(){
$('#widget').myWidget(
);
}
你应该使用它。它为你做所有的脏活

(window).load(function() {
    $('#widget').myWidget(
        <?php echo json_encode($settings); ?>
    );
}
(窗口)。加载(函数(){
$('#widget').myWidget(
);
}

在处理这种情况时,我喜欢使用一个小方法。我知道它不能真正回答你的问题,但它是解决逗号问题的一种优雅方法

$comma = '';
foreach($settings as $setting => $value) {
  if (is_string($value)) { 
    $value = "'" . $value . "'";
    $output .= $comma . $setting . ':' . $value;
    $comma = ',';
  }
}

因此,在第一次运行时,$comma是空白的,但之后它会被放在每个新条目之间。

在处理类似情况时,我喜欢使用以下小方法。我知道它并不能真正回答您的问题,但它是解决逗号问题的一种优雅方法

$comma = '';
foreach($settings as $setting => $value) {
  if (is_string($value)) { 
    $value = "'" . $value . "'";
    $output .= $comma . $setting . ':' . $value;
    $comma = ',';
  }
}

所以在第一次运行时,$comma是空的,但之后它会被放在每个新条目之间。

太好了,我从来没有想到它会这么容易。非常感谢!是的,JSON支持非常好。顺便说一句,它可以在两个方向工作(
JSON\u decode()
):)。太好了,我从没想到会这么容易。非常感谢!是的,JSON支持真的很好。。顺便说一句,它在两个方向都有效(
JSON_decode()
):)。否-1因为这个解决方案有效,但肯定不是一个好的解决方案。你能告诉我为什么这不是一个好的解决方案吗。也许我的代码为此而受苦……因为一个现有的函数,json_encode,已经完成了这项工作。很有可能这个功能会比你的个人代码和你我的聪明人维护的时间更长。不是-1,因为这个解决方案有效,但肯定不是一个好的解决方案。你能告诉我为什么这不是一个好的解决方案吗。也许我的代码为此而受苦……因为一个现有的函数,json_encode,已经完成了这项工作。很有可能这个功能会比你的个人代码和你我认识的更聪明的人维护的时间更长。