PHP / ARRAY / HTML TABLE - 为什么在整体上重复同样的事情?

时间:2012-05-14 21:00:49

标签: html arrays facebook facebook-graph-api

我试图将一系列朋友名称:$ Facebook ['name']从Facebook Graph API变成一个包含4列的表格,每个框中都有一个人名。

问题:

我创建了一个表并将人名放在表格的单元格中,然而,它在所有4个行中重复每个人的名字,而不是在每个框中添加唯一的名称。但是,下一行以新名称开头。

我会极力推荐任何可以帮助指出我出错的地方并帮助我纠正错误的人:

    <? 
    $friends_url = "https://graph.facebook.com/".$user_id."/friends?access_token=".$access_token;
    $friends_json = file_get_contents($friends_url);
    $friends_data = json_decode($friends_json, true);       
    $friends_total = count($friends_data['data']);
    $cols = 4;
    for ($i = 0; $i < $friends_total; $i++) 
    {
            $friends = $friends_data['data'][$i];
            echo "<tr>"; 
                for ($c=0; $c<$cols; $c++) 
                {
                $n = $i+$c;
                    if ( $n < $friends_total) 
                    {
                        echo "<td>".$friends['name']."</td>"; 
                    }
                    else
                    {
                        echo "<td></td>";
                    }
                } 
            echo "</tr>"; 
        $i += ($c-1); 
    } 
    ?>

1 个答案:

答案 0 :(得分:0)

因为你为每个朋友循环了4次而你的循环计数器中的'columns'就在那个循环中,所以尝试更像这样的东西:

$cols = 4;
$current_col = 0;

    echo "<tr>"; 
    foreach ($friends_data['data'] as $friend)
    {
      echo "<td>".$friend['name']."</td>"; 
      if (($current_col++)%$cols == 0){
        echo "</tr><tr>";
      }
    }
   while (($current_col++)%$col !=0){
   echo "<td>&nbsp;</td>";
   }
   echo "</tr>"; 

这循环了所有的朋友,保留了已打印的数量的计数器。在4之后(或者任何$ cols设置为),它会吐出一个新行 当朋友全部打印出来时,它会启动一个新循环,用空单元格填充最后一行的末尾,然后结束行