使用变量作为define()参数

Wal*_*erV 0 php

我正在使用定义功能根据性别改变国籍(Im Italian因性别而异).代码有效,但是当我用MySQL中的其他函数更改函数参数时,函数停止工作.

define("ITA", serialize(array("m" => "italiano", "f" => "italiana")));
define("ENG", serialize(array("m" => "inglese", "f" => "inglese")));
define("RUS", serialize(array("m" => "russo", "f" => "russa")));

function nationality($code, $gender) {
    $nationality = unserialize($code);
    return $nationality[$gender];
}

echo nationality(ENG,'f'); //WORKS

$nationality = $author['nationality'];
echo nationality($nationality,'f'); //DOESNT WORKS
Run Code Online (Sandbox Code Playgroud)

编辑:$ author ['nationality']; 取自MySQL

Vik*_*ora 5

那是因为你将字符串传递给你的函数而不是常量.

我在这里猜测,但看起来$author['nationality']似乎是'ENG','ITA'等.要传递字符串作为常量使用constant()函数,如下所示:

echo nationality(constant($nationality),'f');
Run Code Online (Sandbox Code Playgroud)