使用循环内部循环for / while condion逐行填充表

时间:2017-08-30 06:53:51

标签: php

我有oracle函数,它为我返回1个长字符串。我使用preg_split将字符串转换为数组(字符串以逗号分隔)。

$keywords = preg_split("/[\s,]+/", $oracle_return);

现在我可以将数据作为数组$keywords[1], $keywords[2]等获取。我有73个数组部分。我需要将这些值填充到包含7列和12行的表中。所以这是我的代码。我想使用循环,它将与此示例相同(它会逐行地从我的查询中获取所有值):

while($row = sqlsrv_fectch_array($connection,$query))
{
$fist_column=$row['first_column'];

echo "<td>".$fist_column."</td>";
}

这是我的循环,我想逐行填充数据表7X12。 问题:如何为每个步骤添加+1到$ x?

while($i<=12)     //Or i can use for($i=0;$i<=12;$i++)
{ 
  $i++; 
  echo "
  <tr>
    <td>".$year. "</td>
    <td>".$month. "</td>
    <td>".$keywords[$x]. "</td>     //if $x=1 so, equal to $keywords[1]
    <td>".$keywords[$x+1]. "</td>   //$keywords[2]
    <td>".$keywords[$x+2]. "</td>   //$keywords[3]
    <td>".$keywords[$x+3]. "</td>   //$keywords[4]
    <td>".$keywords[$x+4]. "</td>   //$keywords[5]
  </tr>";
  }

2 个答案:

答案 0 :(得分:0)

我只是假设您希望每行有6个项目(如上一个代码示例所示)。我填充的数据纯粹是为了显示结果...

<?php
error_reporting ( E_ALL );
ini_set ( 'display_errors', 1 );

$arraySize = 73;
$keywords = [];
for ( $i = 0; $i < $arraySize; $i++ )   {
    $keywords[] = $i+1;
}

for ( $i = 0; $i < $arraySize; $i++ )   {
    if ( $i % 6 == 0 )  {
        if ( $i > 0 )   {
            echo "</tr>".PHP_EOL;
        }
        echo "<tr>";
    }
    echo "<td>".$keywords[$i]."</td>";
}
echo "</tr>".PHP_EOL;

哪些输出......

<tr><td>1</td><td>2</td><td>3</td><td>4</td><td>5</td><td>6</td></tr>
<tr><td>7</td><td>8</td><td>9</td><td>10</td><td>11</td><td>12</td></tr>
<tr><td>13</td><td>14</td><td>15</td><td>16</td><td>17</td><td>18</td></tr>
<tr><td>19</td><td>20</td><td>21</td><td>22</td><td>23</td><td>24</td></tr>
<tr><td>25</td><td>26</td><td>27</td><td>28</td><td>29</td><td>30</td></tr>
<tr><td>31</td><td>32</td><td>33</td><td>34</td><td>35</td><td>36</td></tr>
<tr><td>37</td><td>38</td><td>39</td><td>40</td><td>41</td><td>42</td></tr>
<tr><td>43</td><td>44</td><td>45</td><td>46</td><td>47</td><td>48</td></tr>
<tr><td>49</td><td>50</td><td>51</td><td>52</td><td>53</td><td>54</td></tr>
<tr><td>55</td><td>56</td><td>57</td><td>58</td><td>59</td><td>60</td></tr>
<tr><td>61</td><td>62</td><td>63</td><td>64</td><td>65</td><td>66</td></tr>
<tr><td>67</td><td>68</td><td>69</td><td>70</td><td>71</td><td>72</td></tr>
<tr><td>73</td></tr>

答案 1 :(得分:0)

这是你要找的吗?
它将输出72个项目,每行6个。

$keywords = range(1,73);
$year ="year";
$month ="month";
//For loop to 72
for($i=0;$i<72;)
{  
  echo "
  <tr>
    <td>".$year. "</td>
    <td>".$month. "</td>
    // Output the keywords
    <td>".$keywords[$i]. "</td>
    <td>".$keywords[$i+1]. "</td>
    <td>".$keywords[$i+2]. "</td>
    <td>".$keywords[$i+3]. "</td>
    <td>".$keywords[$i+4]. "</td>
    <td>".$keywords[$i+5]. "</td>
  </tr>\n";
    $i =$i +6; // add six to i to make sure it does not repeat itself.
}

我使用范围只是为了制作一个在运行时有效的示例,但您必须将其更改为您的代码 https://3v4l.org/t4WUn

这不会输出最后一项,但由于您知道它的第73项,因此可以使用echo $keywords[73]轻松输出