【发布时间】:2017-04-17 13:50:32
【问题描述】:
我正在通过 XML 循环并从中收集数据。有些值需要翻译,所以我做了一个 switch 函数,它被包裹在另一个函数中,并在每个循环中调用以检查原始值并根据 switch 中定义的新值更改它。
问题是如果我在 foreach 中包含开关,原始值得到正确更改(原始变量 $foo 的字符串被翻译)。但是,如果我将开关包装在函数中并在循环中调用该函数,那么原始值不会改变。它必须是if ($foo == 'one') $foo == 'ein'...这是我的代码:
function checkTranslation($foo) {
switch($foo) {
case('one'): $foo = 'ein'; break;
case('two'): $foo = 'zwei'; break;
...
}
};
foreach ($XML -> some -> data as $item) {
$foo = $item['value'];
checkTranslation($foo);
}
【问题讨论】:
-
你需要从函数中
return并将其赋值给外部的变量,否则在全局范围内是不可见的。或者,通过引用传递。根据这段代码,您实际上并没有使用$foo变量(但我认为这只是为了这个问题而被切断?) -
这里发生了很多事情。首先,你没有从你的函数中返回任何东西。其次,您的函数不是作用于 $foo,而是作用于 $foo 的副本。第三,您没有将函数的返回值分配给任何东西。第四,如果你是,它将被循环的每次迭代覆盖
-
@Qirel 是的,它仅用于问题。谢谢两位的帮助。
标签: php foreach switch-statement