我的Wordpress插件中有以下代码:
wp_localize_script(\'ffd_js_script\', \'myAjax\', array(
\'ajaxurl\' => admin_url(\'admin-ajax.php\'),
\'idinfo\' => $myoptionValue[idinfo],
\'index1\' => $myoptionValue[id1],
\'index2\' => $myoptionValue[id2]
)
);
我想替换
\'index1\' => $myoptionValue[id1],
\'index2\' => $myoptionValue[id2]
使用
for($i=1; $i<= $myoptionValue[fieldcount]; $i++)
{
$arguments .= \',"index"\'.$i.\'=>\'.$myoptionValue[id.$i];
}
所以我有
wp_localize_script(\'ffd_js_script\', \'myAjax\', array(
\'ajaxurl\' => admin_url(\'admin-ajax.php\'),
\'idinfo\' => $myoptionValue[idinfo]
$arguments
)
);
很明显,我在想可能就这么简单,但事实并非如此,我的错误在哪里?
编辑:
完整代码:
require( plugin_dir_path( __FILE__ ) . \'menu.php\');
require_once( plugin_dir_path( __FILE__ ) . \'getuser.php\');
add_action( \'wp_enqueue_scripts\', \'ffd_load_scripts\' );
function ffd_load_scripts()
{
$myoption = get_option( \'fixformdata_options\' );
$myoptionValue = maybe_unserialize( $myoption );
$arguments = array();
for($i=1; $i<= $myoptionValue[fieldcount]; $i++)
{
$arguments[\'index\'.$i] = $myoptionValue[\'id\'.$i];
}
wp_register_script(\'ffd_js_script\', WP_PLUGIN_URL.\'/FixFormData/js/ffd_js_script.js\', array(\'jquery\'));
wp_localize_script(\'ffd_js_script\', \'myAjax\', merge_array(array(
\'ajaxurl\' => admin_url(\'admin-ajax.php\'),
\'idinfo\' => $myoptionValue[\'idinfo\']),$arguments)
);
wp_enqueue_script(\'jquery\');
wp_enqueue_script(\'ffd_js_script\', plugin_dir_url(__FILE__) . \'js/ffd_js_script.js\');
}
SO网友:Tom J Nowell
定义字符串有4种有效方法,see this question for more details.
然而,在您的情况下,PHP提供了一个特殊的例外。然而,大多数用户都没有意识到这一点,而且它确实留下了歧义,因为不再可能区分字符串文字、常量或定义,这使得其他程序员很难阅读您的代码(例如,您自己在9个月内)。
因此,您的代码:
for($i=1; $i<= $myoptionValue[fieldcount]; $i++)
{
$arguments .= \',"index"\'.$i.\'=>\'.$myoptionValue[id.$i];
}
正在尝试将字符串附加到数组的结尾,但这不起作用。数组不是字符串,只能使用
.=
和
.
字符串上的运算符。而且
$myoptionValue[id.$i]
违反特例情况,因为表达式现在不明确(它是指“id.$i”、“id.$i”还是“id.$i”?)
要将项目添加到数组,需要执行以下操作之一:
$arr = array();
$arr[\'key\'] = \'value\';
$arr[] = \'value without a key\';
array_push( $arr, \'value1\', \'value2\', \'value3\', etc... );
因此,您的循环应该是:
for ( $i=1; $i <= $myoptionValue[\'fieldcount\']; $i++ ) {
$arguments[\'index\'.$i] = $myoptionValue[\'id\'.$i ];
}