如何在循环外部使用while循环值

时间:2015-09-28 22:36:18

标签: php variables while-loop output

我正在尝试从Cookie获取值,然后使用explode()转义所有逗号,并使用while循环循环cookie中的所有值。

当我尝试使用下面的代码在while循环中显示值时,它可以正常工作:

echo $hey= '<span>'.$result[$counter].'</span>  ';

但是我需要访问循环外的值,而且这段代码不会给出任何输出。

$cookie_value=$_COOKIE["chords"];  
$counter = 0;
$result=explode(",", $cookie_value);

$array_el_lenght = count($result);

while ($counter<=$array_el_lenght) {
  $hey= '<span>'.$result[$counter].'</span>  ';
  $counter++;
}

echo $hey;

3 个答案:

答案 0 :(得分:3)

您正在尝试访问未定义的$result偏移量,您的代码正在尝试访问不存在的$result[count($result)],您需要替换while语句,因此在上一次迭代中index位于count($result)-1

while ($counter < $array_el_lenght) { //Replaced <= with <
   $hey= '<span>'.$result[$counter].'</span>';
   $counter++;
   echo $hey; // will output the current iteration
 }

// echo $hey; //Will output the content of  last while iteration

答案 1 :(得分:1)

你的while循环循环次数过多,因为数组的最后一个元素是索引$array_el_lenght - 1。此外,不要忘记连接你的结果(编辑:我只是猜测这是你想要做的),而不仅仅是重新分配$hey! ; - )

试试这个:

$cookie_value=$_COOKIE["chords"];  
$counter = 0;
$result=explode(",", $cookie_value);

$array_el_lenght = count($result);

$hey = "";
while ($counter < $array_el_lenght) {
  $hey .= '<span>'.$result[$counter].'</span>  ';
  $counter++;
}
echo $hey;

答案 2 :(得分:0)

$hey在循环内定义,因此其范围以循环结束。如果你想从循环外部访问它,你也应该在它之外定义它:

$hey = NULL;
while ($counter<=$array_el_lenght) {
    $hey= '<span>'.$result[$counter].'</span>  ';
    $counter++;
}
if ($hey) {
    echo $hey;
}