Печатайте поля ввода в соответствии со значением цикла foreach в PHP - PullRequest
0 голосов
/ 09 января 2019

Я показываю изображение пальца для всех 10 пальцев и 3 изображения для каждого пальца, поэтому общее количество изображений пальцев будет 30. Я печатаю это, используя динамический цикл в таблице, где я хочу показать одно поле ввода для каждого пальца, так что если есть два пальца, то должны появиться два поля ввода.

Я уже расшифровал массив объектов и распечатал его, используя функцию foreach, но когда я пытаюсь показать поле ввода, он показывает только одно поле ввода, но я хочу больше полей ввода в соответствии со значениями массива.

Это мой массив:

Array ( [0] => stdClass Object ( [code] => 0 [message] => Success [bio_id] => 1 [ref_id] => 2 [hand] => 1 [fin] => 1 [poz] => 1 ) [1] => stdClass Object ( [code] => 0 [message] => Success [bio_id] => 1 [ref_id] => 2 [hand] => 1 [fin] => 1 [poz] => 2 ) [2] => stdClass Object ( [code] => 0 [message] => Success [bio_id] => 1 [ref_id] => 2 [hand] => 1 [fin] => 1 [poz] => 3 ) [3] => stdClass Object ( [code] => 0 [message] => Success [bio_id] => 1 [ref_id] => 2 [hand] => 1 [fin] => 2 [poz] => 1 ) [4] => stdClass Object ( [code] => 0 [message] => Success [bio_id] => 1 [ref_id] => 2 [hand] => 1 [fin] => 2 [poz] => 2 ) [5] => stdClass Object ( [code] => 0 [message] => Success [bio_id] => 1 [ref_id] => 2 [hand] => 1 [fin] => 2 [poz] => 3 ) )

Это мой код:

$finger =  json_decode($blob->getallbiofile());
//print_r($finger);
$i = 0;
foreach($finger as $fing) {
if($fing->code == '0'){
    $i++;
?>
  <tr>
    <td class="">
<?php echo $finhelp->fingurevalue("hand", $fing->hand); ?> - 
<?php echo $finhelp->fingurevalue("fin", $fing->fin); ?> - 
<?php echo $finhelp->fingurevalue("poz", $fing->poz); ?></td>
    <td class="center">   
    <a href="showfinger?id=<?=$fing->bio_id?>" target="_blank">
     <img src="images/fingerprint.png" class="img-circle img-responsive reportfingerimage"></a>
 </td>
 <?php 
 if($i == $fing->fin) { ?>
        <td class="" rowspan="3">
        <div class="col-xs-2">
    <input type="hidden" name="hand[]" value="<?=$fing->hand?>">
    <input type="hidden" name="finger[]" value="<?=$fing->fin?>">
    <input class="form-control fininput" id="ex1" name="finger_value[]" type="text" value="">
  </div>
    </td>
    <?php
    continue;
  }
?>


  </tr>

<?php 
}
} 
?>

Вывод Я получаю как ссылку на изображение ("https://eruditioninformatics.cf/imagelinks/WebAdminPanel.png") но я ожидаю еще одно поле ввода для второго пальца.

1 Ответ

0 голосов
/ 09 января 2019

Мое решение состоит в том, чтобы каждый раз проверять цикл foreach на предмет значения пальца и сохранять его в массиве. проверьте, не совпадает ли значение со значением цикла foreach, затем напечатайте один раз поле ввода и сохраните другое значение пальца в массив. теперь окончательный код:

$i = 0;
foreach($finger as $fing) {
    $i++;

с

 $finarray = array();
foreach($finger as $fing) { 

и:

if($i == $fing->fin) {

с:

if(!in_array($fing->fin, $finarray, true)) {
    $finarray[] = $fing->fin;

теперь я получаю поле ввода для каждого пальца.

...