PHP-数组和循环

PHP-数组和循环,php,arrays,for-loop,Php,Arrays,For Loop,我需要帮助,我无法理解数组和循环的用途。我必须在右边的单元格中显示该列 我的问题的答案。注意,我有13个这样的数组: print_r ($toto) = Array ( [0] => Array ( [id_depot] => 21758777 [code_stp] => CHI [date_depot_const] => 20/11/18 [date_depot_decla] =>

我需要帮助,我无法理解数组和循环的用途。我必须在右边的单元格中显示该列

我的问题的答案。注意,我有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个示例

答案是:


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

你没有使用索引

$this->toto['id_depot']
应该是

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

您需要修复for循环,您的数组位于一个数组中。。。您需要使用[$i],因为它是第一个索引为[0]的数组,您要显示该数组,然后使用所需的键:

<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>';
 }   
?>

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

我知道有一个答案,尽管提供了一种不同的方法:

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值,并从数组中瞄准所需的键

echo.$this->toto[$i]['id_-depot']。;如果您有一个数组,我可以问一下为什么使用for而不是foreach吗?
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`
          );
 }