年と発行番号を表示する再帰メニューを作成しています。どういうわけか、配列要素ごとに1回印刷するだけです。
これは私が必要とするものです: 年を選択してください -> 2013 -> Issue#1, Issue# 2, Issue# 3, Issue# 4 .
そして、私が得ているのは: 年を選択してください -> 2013 -> Issue#1
これまでの私のコードは次のとおりです。
<?php
echo "<div id='cssmenu'>";
echo "<ul>";
echo "<li class='has-sub'><a href='#'><span>Please select a Year</span></a>";
echo "<ul>";
$dir = new DirectoryIterator('/usr/apps/webdata/backend/assets/newsletters/temp');
$list = array();
foreach($dir as $file)
{
if ($file->isDot()) {
continue;
}
$string = $file;
if (preg_match_all("#(\d{1,})#", $string, $matches, PREG_SET_ORDER)) {
foreach($matches as $match)
{
$issue = $match[0];
while (list($key, $value) = each($match)) {
//YEAR
if (strlen($value) == 4) {
$uyear = $value;
//echo "Year: $uyear \n";
}
// ISSUE#
elseif (strlen($value) == 1) {
$uissue = $value;
//echo "Issue: $uissue \n";
}
}
}
}
if (!isset($list[$uyear])) {
$list[$uyear] = array();
echo "<li class='has-sub'><a href='#'><span>" . $uyear . " </span></a>";
echo "<ul>";
}
if (!in_array($uissue, $list[$uyear])) {
$list[$uyear][] = $uissue;
$a = count($uissue);
for ($i=0; $i<$a; $i++) {
echo " <a class=fancypdf href='#' onclick=myPDF('".$file."')> Issue# ".$uissue." </a>";
echo "</li>";
}
echo "</ul>";
echo "</li>";
}
}
echo "</ul>";
echo "</ul>";
echo "</ul>";
echo "</div>";
////IM USING THIS PRINT JUST TO VERIFY IF THE FUNCTIONS GOES THROUGH ALL THE ELEMENTS
print_r($list);
?>
更新 問題を見つけることができました。私の再帰関数は正しくありませんでした。そのため、最初の要素だけを出力していました。ただし、2 番目の要素を実際に印刷する方法がわかりません。
$a = count($uissue);
for($i=0;$i<$a; $i++)
{
echo " <a class=fancypdf href='#' onclick=myPDF('".$file."')> Issue# ".$uissue." </a>";
echo "</li>";
}
おそらくFor-Each関数を使用していますか?私はまだこれを理解しようとしています。