php foreach as $ var' Undefined variable'

时间:2014-09-26 05:11:05

标签: php foreach undefined

未定义的变量是$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}}如何定义?

3 个答案:

答案 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)

程序输出中无错误: -

http://codepad.org/9FDqrh3D

为$ new_string

提供正确的输出