我对这个问题感到愚蠢,我确信这很简单。当我尝试稍后在脚本中引用变量“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”,它会正确显示所有内容。如果我稍后回复它,它只会显示一个项目。
答案 0 :(得分:2)
看起来你将测试视为字符串,尝试在代码的开头添加:
$test = array();
然后改变:
$test = '["'.$directory. $pathname.'"]';
为:
$test[] = $directory. $pathname;
答案 1 :(得分:0)
在循环的每次迭代中,您将覆盖先前分配的值$test
;
$test = '["'.$directory. $pathname.'"]';
当您显示此项时,无论是在分配后还是在循环之后,您都将获得最后指定的值。如果要在变量中累积值,则需要附加到它,例如
$test .= '["'.$directory. $pathname.'"]';
或者,如果您希望$test
是一个数组并包含其中的所有文件,那么您的赋值应该是数组元素,而不是整个变量,例如。
$test[] = '"'.$directory. $pathname.'"';