2012-04-24 67 views
0
function GetImages($orderByDate, $start, $end) 
{ 

$container = array(); 

if ($handle = opendir('uploads')) 
{ 
    while (false !== ($file = readdir($handle))) 
    { 
     if ($file != "." && $file != "..") 
     { 
      $filename = 'uploads/' . $file; 
      $lastEdit = date("F d Y H:i:s.", filemtime($filename)); 

      $image = array(
       'fileName' => $file, 
       'lastEdit' => $lastEdit 
      ); 

      array_push($container, $image); 
     } 
    } 

    closedir($handle); 
} 

if($orderByDate) 
{ 
    function date_compare($a, $b) 
    { 
     $t1 = strtotime($a['lastEdit']); 
     $t2 = strtotime($b['lastEdit']); 
     return $t1 - $t2; 
    }  
    usort($container, 'date_compare'); 
} 

if(isset($start) && isset($end)) 
{ 
    array_slice($container, $start, $end); 
} 

return $container; 

} 

echo '<pre>'; 
var_dump(GetImages(true, 0, 5)); 
echo '</pre>'; 

isnt slice要走這裏的路嗎?即使我傳遞了開始和結束值,我仍然從數組中獲取所有記錄。由於return array range

+0

你會想把'array_slice(...)'行分配給一些變量,像這樣:'$ result = array_slice(...);' – summea 2012-04-24 22:08:42

回答

0

array_slice返回一個數組,那並不修改傳遞的數組

$container = array_slice($container, $start, $end); 

應該解決您的問題

+0

好的,你建議用什麼方法替換它? – Johan 2012-04-24 22:09:08

+0

只需使用上面輸入的代碼即可運行 – Phil 2012-04-24 22:10:16

+0

我明白了,感謝您的信息! – Johan 2012-04-24 22:12:21

0

取而代之的是

array_slice($container, $start, $end); 

你應該寫

$container = array_slice($container, $start, $end); 

,它應該會更好。