多个for循环 - 如何打印数据

时间:2012-02-07 14:03:40

标签: php for-loop

我想建立一个类似popurls.com的网站,但我会使用存储在MySQL数据库中的静态数据。顺便说一句,我使用php / mysql 在每个列表中,我想显示大约10个链接(就像在popurls上一样)。在这种情况下,如果我有20个列表,我需要为每个特定列表制作20'for'循环 我的问题是;有没有更好的方法来打印20个列表,而不是在PHP中使用20'for'循环。

6 个答案:

答案 0 :(得分:0)

答案 1 :(得分:0)

取决于您的数据输入,但我可以想象这样的事情:

<?php


$lists = arrray('list1', 'list2', 'list3');

foreach ($lists as $current) {
    $data = fetch_data_from_mysql($current);
    foreach ($data as $link) {
        echo "<a href=\"$data\">Link</a>";
    }
}

function fetch_data_from_mysql($current)
{
   $list_data = array();

   // do whatever is required to fetch the list data for item $current from MySQL
   // and store the data in $list_data

   return $list_data;
}

答案 2 :(得分:0)

你只需要两个foreach循环。假设你从mysql表中获取数据(就像你写的那样),这可能是这样的:

$list_query = mysql_query("SELECT * FROM lists";)

while( $list = mysql_fetch_array($list_query) )
{
    echo "<h1>{$list['title']}</h1>";

    $query = mysql_query("SELECT * FROM entries WHERE list_id = {$list['id']}");

    while( $entry = mysql_fetch_array($query) )
    {
        echo "- {$entry['name']}<br />";
    }
}

答案 3 :(得分:0)

您可以从数据库中获取所有信息并将其解析为数组,例如

array[<news type1>] = array( link1, link2, link3, etc);
array[<news type2>] = array( link1, link2, link3, etc);

等等

在布局上你可以使用

foreach ($newsCategory AS $categoryLinks) {
  foreach ($categoryLinks AS $newsLink) {
       <show the link and / or extra data>
  }
}

答案 4 :(得分:0)

只需将链接存储在二维数组中即可。这样你就不得不做一个外循环(迭代列表)和一个内循环迭代特定列表中的链接。

$links = array(
  'science' => array('link1', 'link2', ...),
  'sports' => array('link1', 'link2'),
  // ... and so on
);
foreach ($links as $category => $urls) {
  echo "Links in category: $category\n";
  foreach ($urls as $url) {
    echo $url . "\n";
  }
}

答案 5 :(得分:0)

for循环或foreach循环可以正常工作,但如果您只创建一个for循环并将内容推送到数组或数组中,那么编码将会少得多字符串...然后你可以用实际内容做任何你喜欢的事情(假设我们按列category进行分组。我将使用一个使用字符串数组的示例(以及我的查询)这里解释了参考:http://explainextended.com/2009/03/06/advanced-row-sampling/

$query = mysql_query([QUERY THAT GETS ALL ITEMS, BUT LIMITS BY EACH CATEGORY]) or die(mysql_error());
$all_items = array();
while($row=mysql_fetch_array($query)){
   if (!isset($all_items[$row['category']])){ //if it isn't created yet, make it an empty string
       $all_items[$row['category']] = "";
   }
   $all_items[$row['category']] .= "<li><a href='".$row['url']."'>".$row['title]."</a></li>"; //concatinate the new item to this list
}

现在我们有一个数组,其中每个部分的HTML块存储在一个由类别名称键入的数组中。要输出每个块,只需:

echo  $all_items['category name'];