PHP - Массив и циклы для - PullRequest
       2

PHP - Массив и циклы для

0 голосов
/ 27 ноября 2018

Мне нужна помощь, я затрудняюсь понять, что насчет массивов и циклов "для".Я должен отобразить столбец в правой ячейке.

Ответ на мой запрос.обратите внимание, у меня есть 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 для примера

Ответ:

enter image description here

Мои первые три столбца пусты, и я не знаю почему :( в нем должен отображаться мой массив ..У тебя есть идея?

Ответы [ 3 ]

0 голосов
/ 27 ноября 2018

Ваши массивы находятся в массиве ... вам нужно использовать [$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>';
 }   
?>

Когда вы начинаете свой цикл с нуля, вам не нужно считать до полного подсчета массива, так как это будет один ко многим.

0 голосов
/ 27 ноября 2018

Я понимаю, что есть ответ, хотя и предлагает другой подход:)

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 и выбрать нужное значение key из вашего array

0 голосов
/ 27 ноября 2018

Вы не используете индекс.

$this->toto['id_depot']

Должно быть

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

И вам нужно исправить цикл for, <= должно быть только <:

 for ($i=0 ;$i < count($this->toto);$i++){
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...