我想通过一个函数运行数组的每个元素,所以我选择做一个“foreach”循环。这是我的代码:
//Set up mod and polarity associative arrays
$mod_array = array(
"image_mod1" => "$page_mod1",
"image_mod2" => "$page_mod2",
"image_mod3" => "$page_mod3",
"image_mod4" => "$page_mod4",
"image_mod5" => "$page_mod5",
"image_mod6" => "$page_mod6",
"image_mod7" => "$page_mod7",
"image_mod8" => "$page_mod8"
);
$polarity_array = array(
"image_polarity1" => "$page_polarity1",
"image_polarity2" => "$page_polarity2",
"image_polarity3" => "$page_polarity3",
"image_polarity4" => "$page_polarity4",
"image_polarity5" => "$page_polarity5",
"image_polarity6" => "$page_polarity6",
"image_polarity7" => "$page_polarity7",
"image_polarity8" => "$page_polarity8"
);
foreach($mod_array as $string)
{
convertImageMod($string);
}
foreach($polarity_array as $string)
{
convertImagePolarity($string);
}
但是,当我回显字符串(echo $page_polarity6;
)时,回声的文本就好像该函数尚未应用一样。
以下是我的函数定义:
function convertImageMod($string)
{
$string = preg_replace('/\s+/', '', $string);
$string = str_replace("'", "", $string);
$stringlength = strlen($string);
$stringlength -= 3;
$string = substr ($string, 0, $stringlength);
$string = strtolower ($string);
$string = "<img src=\"images/items/{$string}.png\">";
return $string;
}
function convertImagePolarity($string)
{
$string = "<img src=\"images/items/{$string}.png\">";
return $string;
}
我不在这里做点什么吗?
谢谢!
答案 0 :(得分:3)
该函数可能正在对字符串做一些事情并返回它(猜测。我不能确定没有看到函数定义)。由于您没有对返回值执行任何操作,因此您将丢弃函数返回的任何内容,从而最终使字符串保持不变。
您可以pass the arguments via reference
或者,将返回的结果存储在数组中:
foreach ($mod_array as $key=>$val) {
$mod_array[$key] = convertImageMod($val);
}
答案 1 :(得分:2)
使用foreach
- 循环reference &
将结果应用于数组。例如:
foreach($mod_array as &$string){
// ^ this
$string = convertImageMod($string);
// also, you need to assign return value of a function
// to the current loop element ($string in this case).
}
或使用array_map()
功能。例如:
$mod_array = array_map('convertImageMod', $mod_array);
第二种选择效率较低,占用内存较多。