2016-03-24 139 views
2

我有两个数组。如何比较两个数组并显示列中的匹配

阵列1 - 所有日期的名单
阵列2 - 所有日期的列表中的人在场

我想表明,具有在第一行,并在每一天,一个人所有的日期表出现在第二行,相应的列应该表示存在。

我试过嵌套循环,但它只显示各行和每行一个结果,即每行只有一个匹配。

我要完成这样的事情

<table width="100%" border="1" cellspacing="1" cellpadding="1"> 
 
    <tr> 
 
    <td width="6%">160111</td> 
 
    <td width="6%">160113</td> 
 
    <td width="6%">160120</td> 
 
    <td width="6%">160127</td> 
 
    <td width="6%">160201</td> 
 
    <td width="6%">160203</td> 
 
    <td width="6%">160208</td> 
 
    <td width="6%">160210</td> 
 
    <td width="6%">160217</td> 
 
    <td width="6%">160224</td> 
 
    <td width="6%">160229</td> 
 
    <td width="6%">160302</td> 
 
    <td width="6%">160307</td> 
 
    <td width="6%">160309</td> 
 
    <td width="6%">160321</td> 
 
    <td width="5%">160323</td> 
 
    </tr> 
 
    <tr> 
 
    <td>&nbsp;</td> 
 
    <td>&nbsp;</td> 
 
    <td>&nbsp;</td> 
 
    <td>Present</td> 
 
    <td>&nbsp;</td> 
 
    <td>&nbsp;</td> 
 
    <td>&nbsp;</td> 
 
    <td>Present</td> 
 
    <td>&nbsp;</td> 
 
    <td>&nbsp;</td> 
 
    <td>&nbsp;</td> 
 
    <td>Present</td> 
 
    <td>&nbsp;</td> 
 
    <td>&nbsp;</td> 
 
    <td>&nbsp;</td> 
 
    <td>&nbsp;</td> 
 
    </tr> 
 
</table>

建议?如何运行循环或如何实现?

+0

你能后的样本你的2阵列?数组的结构是什么? – Sean

+0

@Sean Array 1 - 160129,160130;阵列2- 160129; – Arihant

+0

循环访问数组1,并使用'in_array()'来测试数组是否在数组2中。如果是,则显示'present'。 – Barmar

回答

2

使用in_array()测试是否一个项目在阵列2中。

foreach ($array1 as $day) { 
    echo "<td>"; 
    echo in_array($day, $array2) ? "Present" : "&nbsp;"; 
    echo "</td>"; 
} 
0

你可以试试这个,如果阵列相同就像我在我的答案给出

PHP代码:

<?php 
    $dates =array(
     '160111','160113','160120','160127','160201','160203', 
     '160208','160210','160217','160224','160229','160302', 
     '160307','160309','160321','160323' 
    ); 
    $person_present =array(
     '','','','160127','','', 
     '','160210','','','','160302', 
     '','','','' 
    ); 

    foreach ($dates as $pkey => $day) 
    { 
     if (in_array($day, $person_present)) { 
      ?> 
      <td>Present</td> 
      <?php 
     } else { 
      ?> 
      <td>&nbsp;</td> 
      <?php 
     }   
    } 
?> 

全码:

<table width="100%" border="1" cellspacing="1" cellpadding="1"> 
     <tr> 
     <td width="6%">160111</td> 
     <td width="6%">160113</td> 
     <td width="6%">160120</td> 
     <td width="6%">160127</td> 
     <td width="6%">160201</td> 
     <td width="6%">160203</td> 
     <td width="6%">160208</td> 
     <td width="6%">160210</td> 
     <td width="6%">160217</td> 
     <td width="6%">160224</td> 
     <td width="6%">160229</td> 
     <td width="6%">160302</td> 
     <td width="6%">160307</td> 
     <td width="6%">160309</td> 
     <td width="6%">160321</td> 
     <td width="5%">160323</td> 
     </tr> 
     <tr> 
<?php 
    $dates =array(
     '160111','160113','160120','160127','160201','160203', 
     '160208','160210','160217','160224','160229','160302', 
     '160307','160309','160321','160323' 
    ); 
    $person_present =array(
     '','','','160127','','', 
     '','160210','','','','160302', 
     '','','','' 
    ); 

    foreach ($dates as $pkey => $day) 
    { 
     if (in_array($day, $person_present)) { 
      ?> 
      <td>Present</td> 
      <?php 
     } else { 
      ?> 
      <td>&nbsp;</td> 
      <?php 
     }   
    } 
?> 
     </tr> 
    </table> 
0
  1. 迭代通过数组1(foreach循环)
  2. 核对ARRAY2每个值(in_array()

如: -

echo "<br/><table border='1' style='width:100%'><tr><td>"; 
foreach($arr1 as $a1) { 
echo "<table border='1' style='display:inline;border:0px solid'>"; 
echo "<tr><td>$a1</td></tr>"; 
    if(in_array($a1,$arr2)) { 
     echo "<tr><td>Present</td></tr>"; 
    } else { 
     echo "<tr><td> </td></tr>"; 
    } 
    echo "</table>"; 
} 
echo "</td></tr></table>"; 
相关问题