2017-03-29 3 views
1

아래 코드가 있지만 표시 할 이미지의 수를 제한하기 위해 array_splice를 얻을 수 없습니다.이미지 제한이있는 폴더의 이미지 갤러리

<?php 
$id = $_GET['id']; 
    if (empty($id)) { 
    $clientname = 'tazz'; 
} else { 
    $clientname = $_GET['id']; 
} 

$total = $_GET['limit']; 
    if (empty($total)) { 
    $limit = '100'; 
} else { 
    $limit = $_GET['limit']; 
} 

$basefolder = "client/client-galleries/"; 
$dirname = $basefolder.$clientname."/"; 

    $images = scandir($dirname); 
    sort($images); 
    //shuffle($images); 
    $ignore = array(".", ".."); 
    $output = array_splice($ignore, 0, $limit); 

foreach($images as $curimg) { 
     if(!in_array($curimg, $output)) { 

echo " 
    <div class='gallery'> 
     <img src='[[pThumb? &input=`$dirname$curimg` &options=`&w=300&h=300&zc=1&q=95&fltr[]=wmi|./client/images/gallery-watermark-white.png|BL|50|25|200`]]' alt='$curimg'> 
     <div class='desc'></div> 
    </div>\n "; 

     } 
    } 

이 올바르게 갤러리에서 이미지를 표시하지만 http://website.address?id=client&limit=5

답변

0

당신은 당신의 $images 배열에 array_splice을 적용하지 않는 설정으로 이미지의 양을 제한 나던 만 포함 된 $ignore 배열에 ".""..". 또한 array_splice은 배열 내에서 검색/대체하는 데 사용되며 배열의 특정 부분을 가져 오는 데 사용되는 array_slice을 찾고있을 것입니다.

당신이 $images에서 원치 않는 값을 제거하는 array_diff를 사용하는 경우

, 당신 만 대부분의 $limit 이미지를 유지하기 위해 array_slice를 사용할 수 있습니다. 이런 식으로 뭔가 :

$images = scandir($dirname); 
$ignore = array(".", ".."); 
$images_filtered = array_diff($images, $ignore); 
$images_limited = array_slice($images_filtered, 0, $limit); 

$images_filtered$ignore에없는 그 $images에서 모든 항목을 포함해야합니다. $images_limited$images_filtered의 첫 번째 $limit 항목을 포함해야합니다.

+0

감사합니다 힙 @rickdenhann ID 너무 오랫동안 이것을보고 있었는데 나는 그것을 고르지 않았습니다. 잘 했어. –

0

코드에 몇 가지 문제가 있습니다 (예 : $ images 배열 대신 $ ignore 배열 사용). 나는 당신이 겪은 것에 더 가깝게 변화를 줄 것입니다.

$limit = 5; 
$dirname = "..."; 
$images = array_diff(scandir($dirname), [".", ".."]); 
sort($images); 
$limitedImages = array_slice($images, 0, 5); 
foreach ($limitedImages as $curimg) { 
    var_dump($curimg); 
}