【发布时间】:2015-11-27 20:51:57
【问题描述】:
我正在使用 wordpress 中的一些插件,我有以下数组和 foreach 循环,其中包含函数。
问题是,当 $locale_key 变量在函数内部时,我总是得到与 $code 相同的 $locale_key 变量。
请帮忙。
$languages = array(
array('af', 'af', 'Afrikaans'),
array('ar', 'ar', 'العربية', 'rtl'),
array('az', 'az', 'Azərbaycan'),
array('be', 'bel', 'Беларуская мова'),
array('bg', 'bg_BG', 'български'),
array('bs', 'bs_BA', 'Bosanski'),
array('ca', 'ca', 'Català'),
array('cs', 'cs_CZ', 'Čeština'));
$lang = $_SESSION['lang'];
foreach ($languages as $key => $value) {
$locale_key = $languages[$key][1];
$code = $languages[$key][0];
echo $locale_key; // Here i get for example "bs_BA"
add_shortcode( $code, function($atts, $content = null, $locale_key) {
global $lang;
echo $locale_key; // And then here i get "bs"
if ($lang == $locale_key) {
return $content;
}
});
}
【问题讨论】:
-
那么您的预期输出是什么?
-
我的预期输出是数组中的 $languages[$key][1],但我总是得到 $languages[$key][0]
-
你能告诉我们你需要什么作为输出吗?
-
例如,当在 foreach 循环中 $code 为“bs”时,我想将 $locale_key 设置为“bs_BA”,如果我在函数外部回显变量,那么它会起作用,但是当我在函数内部回显变量时,我会得到相同的结果作为 $code 变量。函数($atts, $content = null, $locale_key) { 全局 $lang;回声 $locale_key; });我会得到我需要的 bs,而不是 bs_BA。
-
add_shortcode()是你创建的函数吗?
标签: php arrays wordpress function foreach