Это простая самозагрузка аккордеон:PHP массив для начальной загрузки аккордеона
<div class="panel-group" id="accordion1">
<div class="panel panel-info">
<div class="panel-heading" data-toggle="collapse" data-parent="#accordion3" data-target="#_1-1">XXX</div>
<div id="_1-1" class="panel-collapse collapse">XXX</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" data-toggle="collapse" data-parent="#accordion3" data-target="#_1-2">XXX</div>
<div id="_1-2" class="panel-collapse collapse">#accordion2</div>
</div>
<div class="panel panel-info">
<div class="panel-heading" data-toggle="collapse" data-parent="#accordion3" data-target="#_1-3">XXX</div>
<div id="_1-3" class="panel-collapse collapse">XXX</div>
</div>
</div>
Чтобы создать вложенную гармошку, мы можем скопировать #accordion1
и вставить на accordion2
тексте
HERE есть пример того, что я хотите получить, путем «преобразования» в PHP массив в гармошку, например:
<?php
$unit = array (
"unit1" => array(
"outcome1-1" => "element1-1",
"outcome1-2" => "element1-2"
),
"unit2" => array(
"outcome2-1" => array(
"picture2-1" => "img2-1"
),
"outcome2-2" => "element2-2"
),
"unit3" => array(
"outcome3-1" => "element3-1",
"outcome3-2" => "element3-2"
)
);
?>
Вот как я пытаюсь динамически генерировать бух tstram accordion:
<?php
function array2accordion($array, $level = 1) {
$out='<div id="accordion'.$level.'" class="panel-group">';
$i=0; foreach($array as $key => $elem){ $i++;
if(!is_array($elem)){
$out=$out.'
<div class="panel panel-info">
<div class="panel-heading" data-toggle="collapse" data-parent="#accordion'.$level.'" data-target="#_'.$key.$level.'-'.$key.$i.'">'.$key.'</div>
<div id="_'.$key.$level.'-'.$key.$i.'" class="panel-collapse collapse">'.$key.'</div>
</div>';
}else{
$out=$out.'
<div class="panel panel-info">
<div class="panel-heading" data-toggle="collapse" data-parent="#accordion'.$level.'" data-target="#_'.$key.$level.'-'.$key.$i.'">'.$key.'</div>
<div id="_'.$key.$level.'-'.$key.$i.'" class="panel-collapse collapse">'.array2accordion($elem, $level + 1).'</div>
</div>';
}
}
$out=$out.'</div>';
return $out;
}
echo array2accordion($unit);
?>
На самом деле он не работает должным образом, что я делаю неправильно?
@JFDion [There] (http://codepad.viper-7.com/zf9JNm) - это то, что я пытаюсь сейчас, но он не работает на все ... На самом деле, я немного смущен, потому что я не знаю, как динамически воссоздать структуру аккордеона ... Это сводит меня с ума со всего дня. – neoDev
. Я думаю, что то, что вам не хватало здесь, - это оператор конкатенации после first '$ out. =' –
@Uchiha, пожалуйста, не могли бы вы объяснить его более конкретно? – neoDev