繁体   English   中英

PHP从foreach循环获取函数中的变量

[英]PHP get variable in function from foreach loop

我正在 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 = 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 = $value[1];
    $code       = $value[0];
    add_shortcode( $code, function($atts, $content = null, $locale_key) {
        global $lang;
        if ($lang == $locale_key) {
            return $content;
        }
    }); 
}

当您使用 foreach($array as $key => $value) 时,您可以通过 $key 访问索引并通过 $value 访问相应的值(即使它也是一个数组)。

<?php
$array = [
    [1, 2, 3],
    [3, 4, 5],
];

foreach ($array as list($a, $b, $c)) {
    // $a enthält das erste Element des verschachtelten Arrays
    // und $b enthält das zweite Element
    echo "A: $a; B: $b; C: $c\n";
}
?>

尝试类似上面的方法,我相信您会找到解决方案。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM