将特定数量的文件推入阵列

时间:2016-01-04 14:42:21

标签: php json

我有这段代码将文件推送到将与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);

2 个答案:

答案 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);