我有这段代码将文件推送到将与json一起发送的数组中。但我只需要将目录中的前9个文件推送到数组中。
此外,我需要相同的代码忽略文件夹中的前9个文件,并且只在数组中推送10个及以上。
似乎无法弄明白,这是我的代码:
$filenameArray = [];
$handle = opendir(dirname(realpath(__FILE__))."/images/imagess/$id");
while($file = readdir($handle)){
if(strpos($file, ".jpg" || strpos($file, ".png")){
if($file !== '.' && $file !== '..'){
array_push($filenameArray, "images/imagess/$id/$file");
}
}
}
echo json_encode($filenameArray);
答案 0 :(得分:0)
引入变量并在每次交互时添加它。
$filenameArray = [];
$handle = opendir(dirname(realpath(__FILE__))."/images/imagess/$id");
$i = 1;
while($file = readdir($handle)){
if(strpos($file, ".jpg" || strpos($file, ".png")){
if($file !== '.' && $file !== '..'){
array_push($filenameArray, "images/imagess/$id/$file");
if(++$i == 9) break;
}
}
}
echo json_encode($filenameArray);
答案 1 :(得分:0)
使用计数器(在此示例中为变量$i
),并添加缺少右括号:
$filenameArray = [];
$handle = opendir(dirname(realpath(__FILE__))."/images/imagess/$id");
$i = 9;
while($file = readdir($handle)){
if($i){
if(strpos($file, ".jpg") || strpos($file, ".png")){
// ^^^
if($file !== '.' && $file !== '..'){
array_push($filenameArray, "images/imagess/$id/$file");
}
}
$i--;//decrement the counter until it reaches 0
}
}
echo json_encode($filenameArray);
如果您需要9个符合条件的文件,请将减量放在正确的if
条件语句中。
要忽略前9,只需将其更改为o:
$filenameArray = [];
$handle = opendir(dirname(realpath(__FILE__))."/images/imagess/$id");
$i = 9;
while($file = readdir($handle)){
if(strpos($file, ".jpg") || strpos($file, ".png")){
if($file !== '.' && $file !== '..'){
if($i > 0){
$i--;
}else{
array_push($filenameArray, "images/imagess/$id/$file");
}
}
}
}
echo json_encode($filenameArray);