Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Libraries > Массив в Smarty


Автор: Casy 28.1.2009, 11:57
Прошу помощи разобраться с массивом!
Вот код php

Код

$dir=opendir($path); 
    while ($file = readdir ($dir)) { 
        if ($file != "." && $file != ".." && eregi("\.zip",$file)) { 
            
        $files[]=$file;
        }
        
            $smarty->assign("files", $files);
          $smarty->assign("path", $path);
      
      $smarty->assign("size", bcdiv(filesize($path.$file),1024,1));
      $smarty->assign("date", date("Y-m-d  H:i",filemtime($path.$file)));
      
           
    }
      
         
    closedir($dir);


А вот код шаблона
Код

{section name=files loop=$files}
 <tr><td>{$files[files]}</td>
 <td>
 {section name=size loop=$size}
    {$size[size]}
 {/section}
 kB</td>
 
 <td>
 {section name=date loop=$date}
 {$date[date]}
 {/section}</td>

{/section}


Так вот, получается, что переменная $files выводиться правильно, а вот $size выводит только воследнее значение

Файл               Размер                              Дата
1.zip    37.8 kB              2 0 0 9 - 0 1 - 2 8 0 6 : 1 4    
2.zip    37.8 kB              2 0 0 9 - 0 1 - 2 8 0 6 : 1 4 
6.zip    37.8 kB                          2 0 0 9 - 0 1 - 2 8 0 6 : 1 4

Размер всегда один 37.8 kB    то есть последный, и так же дата!
В чем дело?    

Автор: oksale 28.1.2009, 12:47
А если так сделать:
Код

$dir=opendir($path); 
while ($file = readdir ($dir)) { 
        if ($file != "." && $file != ".." && eregi("\.zip",$file)) {      
            $files[]=array('file'=>$file, 'size'=>bcdiv(filesize($path.$file),1024,1), 'date'=>date("Y-m-d  H:i",filemtime($path.$file)));
        }
}

$smarty->assign("files", $files);
$smarty->assign("path", $path);
              
closedir($dir);


И уже в шаблоне вывод:
Код

{foreach from=$files key=key item=item name="file" }
    <tr>
    <td>{$item.file}</td>
    <td>{$item.size}</td>
    <td>{$item.date}</td>
    </tr>
{/foreach}


У тебя все как то намешано: файл ты проверяешь, а размер файла сохраняешь вне зависимости от того, записал ты его в массив или нет.
И переменную $path зачем в массиве записывать?

Код написан навскидку, надо проверять.

Автор: Casy 28.1.2009, 18:01
Спасибо oksale за все, все работает!  smile 

Проблема решена!


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)