【问题标题】:PHP - Array and loops forPHP - 数组和循环
【发布时间】:2018-11-27 14:47:20
【问题描述】:

我需要帮助,我不知道数组和循环“for”是什么意思。我必须在右侧单元格中显示该列。

我的问题的答案。注意,我有 13 个这样的数组:

print_r ($toto) = 

Array ( [0] => 

   Array ( [id_depot] => 21758777 
           [code_stp] => CHI 
           [date_depot_const] => 20/11/18 
           [date_depot_decla] => 
           [num_bip] => 0100514871
           [num_depot] => AB421743 
           [typ_depot] => 51004 
           [typ_declaration] => ) 

我的html:

 <table>
 <tr>
 <th>ID_DEPOT</th>
 <th>CODE_STP</th> 
 <th>DATE_DEPOT_CONST</th>
 <th>DATE_DEPOT_DECLA</th>
 <th>NUM_BIP</th>
 <th>NUM_DEPOT</th>
 <th>TYP_DEPOT</th>
 <th>TYP_DECLARATION</th>
 </tr>
<?php 
 $i = 0;
 for ($i=0 ;$i <= count($this->toto);$i++){
 echo '<tr>';
 echo '<td>'.$this->toto['id_depot'].'</td>';
 echo '<td>'.$this->toto['code_stp'].'</td>';
 echo '<td>'.$this->toto['date_depot_const'].'</td>';
 echo '<td>Jill</td>';
 echo '<td>Smith</td>';
 echo '<td>50</td>';
 echo '<td>Jill</td>';
 echo '<td>Smith</td>';
 echo '</tr>';
 }   
?>

当然我必须填写所有列,但目前我只填写了 3 个示例

答案:

我的前三列是空的,我不知道为什么 :( 它应该显示我的数组...你有什么想法吗?

【问题讨论】:

  • echo ''.$this->toto[$i]['id_depot'].'';
  • 如果你有一个数组数组,请问为什么使用for而不是foreach

标签: php arrays for-loop


【解决方案1】:

你没有使用索引。

$this->toto['id_depot']

应该是

$this->toto[$i]['id_depot']

你需要修复for循环,&lt;=应该只有&lt;

 for ($i=0 ;$i < count($this->toto);$i++){

【讨论】:

    【解决方案2】:

    您的数组在一个数组中...您需要使用[$i],因为它是您显示的第一个索引为 [0] 的数组以定位该数组,然后是您需要的key

    <table>
     <tr>
     <th>ID_DEPOT</th>
     <th>CODE_STP</th> 
     <th>DATE_DEPOT_CONST</th>
     <th>DATE_DEPOT_DECLA</th>
     <th>NUM_BIP</th>
     <th>NUM_DEPOT</th>
     <th>TYP_DEPOT</th>
     <th>TYP_DECLARATION</th>
     </tr>
    <?php 
     $i = 0;
     for ($i=0 ;$i <= count($this->toto);$i++){
     echo '<tr>';
     echo '<td>'.$this->toto[$i]['id_depot'].'</td>';
     echo '<td>'.$this->toto[$i]['code_stp'].'</td>';
     echo '<td>'.$this->toto[$i]['date_depot_const'].'</td>';
     echo '<td>Jill</td>';
     echo '<td>Smith</td>';
     echo '<td>50</td>';
     echo '<td>Jill</td>';
     echo '<td>Smith</td>';
     echo '</tr>';
     }   
    ?>
    

    当您从零开始循环时,您不需要一直计数到数组计数,因为这将是一对多。

    【讨论】:

      【解决方案3】:

      我知道有一个答案,只是提供了一种不同的方法:)

      foreach ($this->toto as $key => $toto) {
           echo sprintf(
                   '<tr><td>%d</td>%s<td>%s</td><td>%s</td><td>%s</td><td>%d</td><td>%s</td><td>%s</td></tr>',
                     $toto['id_depot'],
                     $toto['code_stp'],
                     $toto['date_depot_const'],
                     `Jill`,
                     `Smith`,
                     50,
                     `Jill`,
                     `Smith`
                );
       }
      

      认为上面的示例可以省去您的麻烦并让您的脚本更有条理 :) 对于您拥有的其余硬编码示例,您只需替换正确的sprintf 值并从您的array 定位所需的key

      【讨论】:

        猜你喜欢
        • 2017-07-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-10-02
        • 2014-02-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多