-1

问这个我觉得很傻,我相信这是非常简单的事情。当我稍后在脚本中尝试引用变量“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.'"]';    
     }
    }
?>

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

4

2 回答 2

2

看起来您将 test 视为字符串,并尝试在代码开头添加它:

$test = array();

然后改变:

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

至:

$test[] = $directory. $pathname;   
于 2013-09-10T16:06:21.640 回答
0

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

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

当你显示这个时,无论是在赋值之后还是在循环之后,你都会得到最后一个赋值。如果要累积变量中的值,则需要附加到它,例如,

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

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

$test[] = '"'.$directory. $pathname.'"';
于 2013-09-10T16:06:41.167 回答