2013-02-25 109 views
0

我有5个阵列显示多个阵列在一个表

$array1 = array('ar1_1','ar1_2','ar1_3','ar1_4'); 
    $array2 = array('ar2_1','ar2_2','ar2_3','ar2_4','ar2_5'); 
    $array3 = array('ar3_1','ar3_2','ar3_3','ar3_4','ar3_5','ar3_6'); 
    $array4 = array('ar4_1','ar4_2','ar4_3','ar4_4'); 
    $array5 = array('ar5_1','ar5_2','ar5_3'); 
    $loc = array('AM','IN','US'); 

我想以这样的方式将其显示;

<table> 
<tr class="d1 vevent"> 
<td> 
<b><abbr class="dtstart" title="' . $array1 . '">' . $array2 . '</abbr></b> <br>' . $array3 . '</td> 
<td> 
<span class="summary">' . $array4 . ' - ' . $array5 . '</span> 
<span class="location">' . $loc . '</span> 
</td> 
</tr> 
</table> 

任何解决方案?

我试过for循环,foreach循环,zip,array_merge和array_combine,但无法达到预期的结果。

我已经试过代码:

echo '<table width="100%" border="1" cellspacing="0" cellpadding="5"> 
<tbody> 
<tr class="toprow"> 
<td><strong>Date </strong></td> 
<td><strong> Details</strong></td> 
</tr>'; 


/* 
foreach(array_combine($date, $time) as $time1 => $date1) 
{ 
@$date1 = split('[()]', $date1); 
    echo $time1. $date1[1]. "<br />"; 
} */ 




$result = count($match_no); 
for($i=0; $i<$result; $i++) { 
echo ' 
<tr class="d1 vevent"> 
<td> 
<b><abbr class="dtstart" title="'; 
echo trim($date[0]); 
echo '">'; 
echo $date[0]; 
echo '</abbr></b> <br>'; 

foreach($time as $time1) 
{ 
@$time1 = split('[()]', $time1); 
    echo $time1[1]; 
} 
echo '</td> 
<td> 
<span class="summary">'; 
echo $match_no[0]; 
echo ' - <a href="'; 
echo '#" class="url">'; 
echo $team[0]; 
echo ' vs '; 
echo $team[1]; 
echo '</a></span>'; 
echo '<span class="location">'; 
echo $location; 
echo '</span>'; 
echo '</td> 
</tr>'; 

} 

echo '</table>'; 

这是代码我试过,但foreach循环迭代多的时间循环迭代每次。

+0

您对桌子外观的描述很模糊。你什么意思? – ajon 2013-02-25 20:10:52

+0

向我们展示您尝试过的循环? /你如何获得数组?静态或数据库 – UnholyRanger 2013-02-25 20:10:55

+0

@unholyRanger代码添加 – Nandla 2013-02-25 20:16:18

回答

0

我可以推荐你使用这个类吗?像下面这样:

class myClass(){ 
    public $title; 
    public $var1; 
    public $var2; 
    public $var3; 
    public $var4; 
    public $var5; 
    public $loc; 

    public function __construct($title, $var1, $var2, $var3, $var4, $var5){ 
     $this->title = $title; 
     $this->var1 = $var1; 
     $this->var2 = $var2; 
     $this->var3 = $var3; 
     $this->var4 = $var4; 
     $this->var5 = $var5; 
    } 

    public function printTable(){ 
    echo ' 
     <tr class="d1 vevent"> 
      <td> 
      <b><abbr class="dtstart" title="' . $this->var1 . '">' . $this->var2 . '</abbr></b> <br>' . $this->var3 . '</td> 
      <td> 
       <span class="summary">' . $this->var4 . ' - ' . $this->var5 . '</span> 
       <span class="location">' . $this->loc . '</span> 
      </td> 
     </tr>'; 
    } 
} 

然后你就可以创建使用您的阵列中的数据,如对象:

$obj = myClass($ar1_1,$ar1_2,$ar1_3, $ar1_5,$loc); 
//Then print the table: 
$obj->printTable(); 

或者,如果你有对象的数组:

echo "<table>"; 
for($objArray as $obj){ 
    $obj->printTable(); 
} 
echo "</table>"; 

最后,如果你想使用你现有的阵列系统使用这个类,你可以做以下事情:

$longestArray = $array1; 
if(count($array2)>count($longestArray)) $longestArray = $array2; 
if(count($array3)>count($longestArray)) $longestArray = $array3; 
if(count($array4)>count($longestArray)) $longestArray = $array4; 
if(count($array5)>count($longestArray)) $longestArray = $array5; 
if(count($loc)>count($longestArray)) $longestArray = $loc; 

$objArray = Array(); 
for($i=0;$i<count($longestArray);$i++){ 
    $objArray[] = myClass($array1[$i],$array2[$i],$array3[$i], $array4[$i], $array5[$i], $loc[$i]); 
} 

echo "<table>"; 
for($objArray as $obj){ 
    $obj->printTable(); 
} 
echo "</table>"; 

注意:只要数组的长度比索引短,就会得到很多关于索引不存在的索引的警告,但这应该是有效的并且执行得很好。另外,我没有测试它,所以很容易出现拼写错误。

+0

你可以更详细地阐述它 – Nandla 2013-02-25 20:27:12

+0

其实我很穷阵列:( 谢谢,我会给它在这里试试并更新结果 – Nandla 2013-02-25 20:32:28

+0

你可以看到我的更新使用你当前的代码 – ajon 2013-02-25 20:40:46