2015-02-05 50 views
-3

$ abc = array(1,2,3,4,5,6,7,8);根据一些限制在html表中显示数据

$ xyz = array(a,b,c,d,e,f);

我想从上面两个数组中检索所需格式的数据(实际上这些数组是从数据库表中生成的)。数据将显示在HTML TABLE中。我已经使用PHP MYSQL。例如,显示的值可能不是一个序列,但有两个不同的数组。为了更清楚我想说,奇数列(从第一列开始)将显示array abc的值,甚至会显示array xyz的值。 请帮我一把。提前致谢。

enter image description here

+2

我们不能做你的工作。但起初,在我做任何事之前,我需要知道如何处理用户数据。点击_Go_后页面是否重新加载?或者有没有AJAX? – 2015-02-05 19:11:22

+0

这个问题还不清楚,因为(一方面)它没有把这个分割的规则描述成列。如果$ abc远远长于$ xyz,会不会添加空列?另外,是否有特定的理由只有3行?除此之外,由于瓦茨拉夫提到的原因,这是一个糟糕的问题。 – GolezTrol 2015-02-08 09:30:17

+0

你说得对,如果数组大小不匹配,它可能会添加空列,但逻辑是如果一个数组完成,另一个数组将从那里追加。其实这是一个机构的考试座位计划,他们希望自动生成不同课程的学生的卷号。例如假设物理学的学生将坐在第1,3,5行......和2,4,6 ......的化学位置上,并且如果座位留在奇数或偶数行,那么生物学将从那里继续。尽管我知道它是一种批判逻辑,但我必须做到这一点。其他想法也表示赞赏。 – 2015-02-08 09:49:55

回答

1

这是一个非常有趣的问题。我想我找到了一个解决方案。

function table (array $array1, array $array2, $splitIndex) 
    { 
    $rows = array(); 
    $currentRow = 0; 

    // Make sure $array1 is the bigger of them 
    if (count ($array2) > count ($array1)) 
    { 
     $arrayTemp = $array2; 
     $array2 = $array1; 
     $array1 = $arrayTemp; 
    } 

    // Loop over each element of the array 
    foreach ($array1 as $index => $arrayValue) 
    { 
     $rows [$currentRow] [] = $arrayValue; 
     if (isset ($array2 [$index])) 
      $rows [$currentRow] [] = $array2 [$index]; 
     else 
      $rows [$currentRow] [] = ''; 

     $currentRow = ($currentRow == $splitIndex ? 0 : $currentRow + 1); 
    } 
    $output = '<table>'; 

    // Loop over the rows 
    foreach ($rows as $row) 
    { 
     $subOutput = '<tr>'; 

     // Loop over the columns in the rows 
     foreach ($row as $element) 
      $subOutput .='<td>'. $element .'</td>'; 

     $output .= $subOutput .'</tr>'; 
    } 

    // Return the output altogether. 
    return $output .'</table>'; 
} 

现在你可以使用:

echo table ([ 'i', 'b', 'a', 'e', 'b' ], ['1', '2', '3'], 2); 

的2表明,它会分裂在每两行,就像是在你的榜样3。

+0

感谢Aron,它根据我的需要工作,但可以限制表中的行数和列数,以便它只显示适合表格的那些值。我也可以设置要显示的数组中值的开始和结束范围。希望你清楚。再次感谢你的帮助。 – 2015-02-08 17:51:46

+0

我对脚本做了一些更改。现在有了更多定制选项的新语法。 https://gist.github.com/Xesau/66d74336d1b91f81ed44 开始和结束范围版本:https://gist.github.com/Xesau/c78f5e72f53db228a00a *用途*: '回声keyValueTable([ '一' =>'b'....],0,array(),0,'\t',$ startIndex,$ length);' – Xesau 2015-02-09 11:49:02

+0

我无法调用该函数,我传递的参数为空,请举个例子。谢谢 – 2015-02-09 17:46:30