2016-03-24 136 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>"; 
相關問題