我有以下foreach
循环(内部foreach
循环):
foreach ($options_default as $key=>$value) {
foreach ($option_names as $option_name_key=>$option_name_value){
$temp = array($key=>$value);
update_option($option_name_value, $temp);
unset($temp);
}
}
这个循环遍历这两个数组:
$option_names = array (
'API_URL'=>'api-url',
'API_CDN_URL'=>'cdn-url',
'API_USERNAME'=> 'api-username'
);
$options_default = array (
'api_url' => 'url1',
'cdn_url' => 'url2',
'api_username' => 'test',
);
但是,$temp
的值始终设置为$options_default
数组中的最后一个键/值对。任何人都可以在这里提出问题的建议吗?
- >预期产出
因此循环将使这三个调用更新选项(假设我只是将$ value作为第二个参数传递以便于):
update_option(api-url,url1);
update_option(cdn-url,url2);
update_option(api-username,test);
答案 0 :(得分:0)
再次思考一下foreach
循环的构造以及为什么它没有做你想要的东西。您目前正在$option_names
上循环三次,这导致九次调用update_option
。另请查看update_option
的参数。在您的代码中,您将两个参数传递给它:字符串和数组。但你明显想要的是两个字符串。
您可以将MultipleIterator与ArrayIterator结合使用来执行此任务:
$iterator = new MultipleIterator();
$iterator->attachIterator(new ArrayIterator($option_names));
$iterator->attachIterator(new ArrayIterator($options_default));
foreach ($iterator as $values) {
update_option($values[0], $values[1]);
}
希望这有帮助