未定义的变量是$new_string
。
我写了这个小剧本,因为我需要它,(不要问为什么)。
$string = "abcdefghijklmnopqrstuvwxyz"; // just used as an example
// $string becomes "badcfehgjilknmporqtsvuxwzy"
$now_in_pairs = str_split($string, 2);
$reverse = array_map('strrev', $now_in_pairs);
foreach($reverse as $r) {
$new_string .= $r;
}
echo $new_string;
我知道我可以简单地说,$new_string = NULL
一开始就避免使用未定义的变量,但这并不能帮助我理解为什么它没有被定义。
在非常外行的条件下,$r
等于数组中每对的值?
当$new_string
等于$r
时,{{1}}如何定义?
答案 0 :(得分:2)
foreach($reverse as $r) {
$new_string .= $r;
}
$new_string .= $r;
表示$new_string = $new_string . $r;
此处您将$r
附加到变量$new_string
的值,该变量未在此代码之前声明或定义,即,它不是存在。您可以通过将foreach
上面的变量声明为:
$new_string="";
foreach($reverse as $r) {
$new_string .= $r;
}
答案 1 :(得分:1)
OP正在寻找解决方案,其中$ new_string不需要事先初始化。
解决方案是使用PHP的implode函数
$new_string = implode($reverse);
//another usage with glue parameter:
//$new_string = implode('', $reverse);
答案 2 :(得分:0)