稍后在程序中使用数组会导致只显示一条记录

时间:2013-09-10 16:02:02

标签: php

我对这个问题感到愚蠢,我确信这很简单。当我尝试稍后在脚本中引用变量“test”时,不是列出数组中的所有70个项目,而是仅列出一个。

<?php
$exclude = '/^.*\.(lck)$/i'; 
$directory = 'images/slide/';   
$rootpath = 'images/slide/';
$pathnames = preg_grep('/^([^.])/', scandir($rootpath));
shuffle($pathnames);
foreach ($pathnames as $pathname) {
    if (preg_match($exclude, $pathname)) {
      } else {
        $test = '["'.$directory. $pathname.'"]';    
     }
    }
?>

如果我在测试变量声明下方回显“test”,它会正确显示所有内容。如果我稍后回复它,它只会显示一个项目。

2 个答案:

答案 0 :(得分:2)

看起来你将测试视为字符串,尝试在代码的开头添加:

$test = array();

然后改变:

$test = '["'.$directory. $pathname.'"]';   

为:

$test[] = $directory. $pathname;   

答案 1 :(得分:0)

在循环的每次迭代中,您将覆盖先前分配的值$test;

$test = '["'.$directory. $pathname.'"]';

当您显示此项时,无论是在分配后还是在循环之后,您都将获得最后指定的值。如果要在变量中累积值,则需要附加到它,例如

$test .= '["'.$directory. $pathname.'"]';

或者,如果您希望$test是一个数组并包含其中的所有文件,那么您的赋值应该是数组元素,而不是整个变量,例如。

$test[] = '"'.$directory. $pathname.'"';