Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP变量连接数组值_Php_Arrays - Fatal编程技术网

用PHP变量连接数组值

用PHP变量连接数组值,php,arrays,Php,Arrays,我有一个[key]=>[value]数组,在调用函数时返回字符串 我的问题是,当我用数组值连接一个php变量时,它会给我这个错误 分析错误:语法错误,C:/…中出现意外的“$name”(T_变量) 我的代码: function language( $phrase , $name ) { static $language= array ( 'hello' => 'Hello '.$name,

我有一个[key]=>[value]数组,在调用函数时返回字符串

我的问题是,当我用数组值连接一个php变量时,它会给我这个错误

分析错误:语法错误,C:/…中出现意外的“$name”(T_变量)

我的代码:

function language( $phrase , $name ) {
     static $language= array (
                              'hello' => 'Hello '.$name,
                              'welcome' => 'Welcome '.$name,
                              'goodbye' => 'Goodbye'.$name,
     )
       return $language[$phrase];
}
调用时的预期输出

echo language("hello", "name");
输出:Hello name


有没有其他方法可以实现这一点?

不能用参数初始化静态变量,它们必须是常量。如果您更正了原始代码的语法(缺少
),则会出现错误

PHP致命错误:常量表达式中包含无效操作

您可以通过将static设置为某个虚拟值(即
null
),然后在尚未设置值时使用
if
来设置该值来实现此目的

function language( $phrase , $name ) {
    static $language= null;

    if ( $language == null )    {
        $language = array (
            'hello' => 'Hello '.$name,
            'welcome' => 'Welcome '.$name,
            'goodbye' => 'Goodbye'.$name,
            );
    }
    return $language[$phrase];
}

甚至
静态$language就足够了。@u\u mulder谢谢,但我倾向于有点迂腐,更喜欢设置我创建的任何变量。