-1

私のphpコードで次のhtmlを出力する必要があります。画像がレンダリングされないことを除いて、コードは機能します。また、すべてではなく、4 つのリスト項目のみをランダムに表示したいと考えています。コードと配列を再構築するためにあなたの助けが必要です。助けてください。

<?php
function HTMLMenu($menu, $parentid = 0)
{
  $results = "";

  if ($menu.count() > 0) {
       $results .= "<div id=\"recommended-links\">\n";
       $results .= "<ul>\n";
       foreach ($menu as $item) if ($item["parentid"] == $parentid)
       {
            $results .= "<li>\n";
            $results .= "<p>\n";
            $results .= "<a href='".$item["url"]."'>".$item["title"]."</a>\n";
            $results .= "</p>\n";
            $results .= HTMLMenu($menu, $item["id"])
            $results .= "</li>\n";
       }
       $results .= "</ul>\n";
       $results .= "</div>\n";
  }

  return $results;
}


$menu = array( 

'1' => array('id' => 1, 'parentid' => 0, 'title' => 'Apple',    'url' => 'url-1', 'img' => 'img-1'), 
'2' => array('id' => 2, 'parentid' => 0, 'title' => 'Banana',   'url' => 'url-2',  'img' => 'img-2'), 
'3' => array('id' => 3, 'parentid' => 0, 'title' => 'Tangerine','url' => 'url-3',  'img' => 'img-3'), 
'4' => array('id' => 4, 'parentid' => 3, 'title' => 'Pear',     'url' => 'url-4',  'img' => 'img-4'), 
'5' => array('id' => 5, 'parentid' => 4, 'title' => 'Walnut',   'url' => 'url-5',  'img' => 'img-5'), 
'6' => array('id' => 6, 'parentid' => 4, 'title' => 'Ice Cream', 'url' => 'url-6',  'img' => 'img-6'), 
'7' => array('id' => 7, 'parentid' => 4, 'title' => 'Candy',     'url' => 'url-7',  'img' => 'img-7'), 
'8' => array('id' => 8, 'parentid' => 3, 'title' => 'Nectar',    'url' => 'url-8',  'img' => 'img-8'), 
'9' => array('id' => 8, 'parentid' => 3, 'title' => 'Honey',    'url' => 'url-9',  'img' => 'img-9') 
); 

echo HTMLMenu($menu);
?> 

目的の html 表示

<div id="recommended-links">
    <p>Recommended</p>

    <ul>         
        <li>
            <img src="image-1" alt="" title="" class="imagecache" height="104" width="102">    
            <p>    <a href="url-1">Apple</a></p>
        </li>

        <li>
            <img src="image-2" alt="" title="" class="imagecache" height="104" width="102">    
            <p>    <a href="url-2">Banana</a></p>
        </li>

        <li>
            <img src="image-3" alt="" title="" class="imagecache" height="104" width="102">    
            <p>    <a href="url-3">Tangerine</a></p>
        </li>

        <li>
            <img src="image-4" alt="" title="" class="imagecache" height="104" width="102">    
            <p>    <a href="url-4">Pear</a></p>
        </li>
    </ul>   

</div>

4つのリスト項目をランダムに表示したい

4

5 に答える 5

0
<?php
function HTMLMenu($menu, $parentid = 0)
{
   $results = "";

   if (count($menu) > 0) {
   $results .= "<div id=\"recommended-links\">\n";
   $results .= "<p>Recommended</p><ul>\n";
    $_menu = array_rand($menu, 4);
   foreach ($_menu as $item)
   {
        $results .= "<li>\n";
        $results .= "<img src='".$menu[$item]["img"]."' alt='' title='' class='imagecache' height='104' width='102'>\n";
        $results .= "<p>\n";
        $results .= "<a href='".$menu[$item]["url"]."'>".$menu[$item]["title"]."</a>\n";
        $results .= "</p>\n";
        $results .= "</li>\n";
   }
   $results .= "</ul>\n";
   $results .= "</div>\n";
   }

return $results;
}


$menu = array( 

'1' => array('id' => 1, 'parentid' => 0, 'title' => 'Apple',    'url' => 'url-1', 'img' => 'img-1'), 
'2' => array('id' => 2, 'parentid' => 0, 'title' => 'Banana',   'url' => 'url-2',  'img' => 'img-2'), 
'3' => array('id' => 3, 'parentid' => 0, 'title' => 'Tangerine','url' => 'url-3',  'img' => 'img-3'), 
'4' => array('id' => 4, 'parentid' => 3, 'title' => 'Pear',     'url' => 'url-4',  'img' => 'img-4'), 
'5' => array('id' => 5, 'parentid' => 4, 'title' => 'Walnut',   'url' => 'url-5',  'img' => 'img-5'), 
'6' => array('id' => 6, 'parentid' => 4, 'title' => 'Ice Cream', 'url' => 'url-6',  'img' => 'img-6'), 
'7' => array('id' => 7, 'parentid' => 4, 'title' => 'Candy',     'url' => 'url-7',  'img' => 'img-7'), 
'8' => array('id' => 8, 'parentid' => 3, 'title' => 'Nectar',    'url' => 'url-8',  'img' => 'img-8'), 
'9' => array('id' => 8, 'parentid' => 3, 'title' => 'Honey',    'url' => 'url-9',  'img' => 'img-9') 
); 

echo HTMLMenu($menu);
?>  

これで、ランダムなリスト項目が生成されます。

于 2013-08-13T07:16:39.163 に答える
0

画像部分については、それらが正しいディレクトリにあることを確認してください(あなたの場合はドキュメントルートディレクトリ)

2 番目のケースでは、4 つの配列エントリのみが必要な場合は、残りのエントリを配列から削除できます。

または、ループに挿入されたループを使用して、For 4foreachつの項目のみにアクセスすることもできます。

于 2013-08-13T07:16:50.483 に答える
0
change your function to the and make sure to check the folder where the images are located

function HTMLMenu($menu, $parentid = 0)  {


$results = "";  
$results .= "<div id=\"recommended-links\">\n";
$results .= "<ul>\n";

foreach ($menu as $item) 
   {


       if ($item["parentid"] == $parentid) 
       {
        $results .= "<li>\n";
        $results .= "<img src='".$item["img"]."' alt='' title='' class='imagecache' height='104' width='102'>\n";
        $results .= "<p>\n";
        $results .= "<a href='".$item["url"]."'>".$item["title"]."</a>\n";
        $results .= "</p>\n";
        $results .= HTMLMenu($menu, $item["id"]);
        $results .= "</li>\n";

       }
   }


$results .= "</ul>\n";
$results .= "</div>\n";

return  $results;

}

于 2013-08-13T07:30:05.820 に答える
0

このように foreach を for ループに変更するだけです

このループは 4 回実行され、$menu配列からランダムな項目が取得されます

<?php
function HTMLMenu($menu, $parentid = 0)
{
   $results = "";

   if ($menu.count() > 0) {
   $results .= "<div id=\"recommended-links\">\n";
   $results .= "<p>Recommended</p><ul>\n";
   $menu_keys = array_rand($menu, 4);
   for ($i=0; $i<4; $i++)
   {
        $item = $menu[$menu_keys[$i]];
        $results .= "<li>\n";
        $results .= "<img src='".$item["img"]."' alt='' title='' class='imagecache' height='104' width='102'>\n";
        $results .= "<p>\n";
        $results .= "<a href='".$item["url"]."'>".$item["title"]."</a>\n";
        $results .= "</p>\n";
        $results .= "</li>\n";
   }
   $results .= "</ul>\n";
   $results .= "</div>\n";
   }

return $results;
}


$menu = array( 

'1' => array('id' => 1, 'parentid' => 0, 'title' => 'Apple',    'url' => 'url-1', 'img' => 'img-1'), 
'2' => array('id' => 2, 'parentid' => 0, 'title' => 'Banana',   'url' => 'url-2',  'img' => 'img-2'), 
'3' => array('id' => 3, 'parentid' => 0, 'title' => 'Tangerine','url' => 'url-3',  'img' => 'img-3'), 
'4' => array('id' => 4, 'parentid' => 3, 'title' => 'Pear',     'url' => 'url-4',  'img' => 'img-4'), 
'5' => array('id' => 5, 'parentid' => 4, 'title' => 'Walnut',   'url' => 'url-5',  'img' => 'img-5'), 
'6' => array('id' => 6, 'parentid' => 4, 'title' => 'Ice Cream', 'url' => 'url-6',  'img' => 'img-6'), 
'7' => array('id' => 7, 'parentid' => 4, 'title' => 'Candy',     'url' => 'url-7',  'img' => 'img-7'), 
'8' => array('id' => 8, 'parentid' => 3, 'title' => 'Nectar',    'url' => 'url-8',  'img' => 'img-8'), 
'9' => array('id' => 8, 'parentid' => 3, 'title' => 'Honey',    'url' => 'url-9',  'img' => 'img-9') 
); 

echo HTMLMenu($menu);
?> 

注: 行を削除しました$results .= HTMLMenu($menu, $item["id"])。4つのランダムアイテムを取得するためにその行は必要ありません

于 2013-08-13T07:35:28.040 に答える