2015-09-11 4 views
0

Привет, вот что я пытаюсь достичь. У меня есть этот код для сканирования определенного каталога и хранения всех подкаталогов в массиве. Но когда я его выход с Еогеасп, только одно значение outputted.My код:создание массива каталогов в php

foreach(glob($directories.'*', GLOB_ONLYDIR) as $sloz) { 
$dirname = array (basename($sloz)); } 

<?php foreach ($dirname as $slozka) { 
    echo <<<dir 
$("a[rel='$slozka']").colorbox({maxWidth: "90%", maxHeight: "90%", opacity: ".5"}).; 
dir; 
} ?> 
<?php echo '}'.PHP_EOL ?> 

Выход всегда только одна строка с подкаталоге

Есть идеи?

+0

Вы переназначаете '$ dirname' каждый раз, когда итерации. Вместо этого вам нужно использовать '$ dirname []'. –

ответ

0

Этот цикл появляется неправилен:

foreach(glob($directories.'*', GLOB_ONLYDIR) as $sloz) { 
    $dirname = array (basename($sloz)); 
} 

Я предполагаю, что вы пытаетесь построить массив матчей. Но в этом цикле вы просто присваиваете значение переменной $dirname в каждом случае.

Затем вы пытаетесь выполнить итерацию по неиерархическому значению, которое вызывает PHP Warning: Invalid argument supplied for foreach()..., хотя я предполагаю, что у вас нет предупреждений, так как вы не упомянули об этом.

Попробуйте следующее:

$dirname = []; 

foreach (glob($directories.'*', GLOB_ONLYDIR) as $sloz) { 
    $dirname[] = basename($sloz); 
} 

Тогда вы можете foreach над массивом $dirname значений.

+0

О да, это работает, когда я удаляю этот «массив» раньше (basename ($ sloz)). Я просто PHP новичок так много спасибо! :) – Houdasek

+0

Без проблем @Houdasek - рад помочь :) –

Смежные вопросы