PHP отображает имена элементов массива

0

Я передаю массив $ data ["results"] от моего контроллера к моему представлению, и я хочу эхо NAMEs из тех элементов массива, которые равны 1.

Например, если {$ first == 1, $ second == 0, $ third == 0}, я хочу отобразить "первый".

Не могли бы вы проверить мой код ниже и помочь мне найти мою ошибку.

    foreach($results as $row){                  
                                $first= $row->first;
                                $second= $row->second;
                                $third= $row->third;

            if ($first == 1) {$digits['first'] = $first;}  
            if ($second == 1) {$digits['second'] = $second;} 
            if ($third == 1) {$digits['third'] = $third;} 

print_r($digits);  //  Displays 'Array ( [first] => 1 )' instead of 'first'
    }

Обновить:

Я генерирую таблицы html через цикл и отображаю их с помощью TCPDF.

Обновленный код ниже обычно отображает "first", если {$ first == 1, $ second == 0, $ third == 0} для первой таблицы.

Для второй таблицы if {$ first == 0, $ second == 0, $ third == 1} он должен отображать "третий", но он отображает "первый, третий", потому что он добавляет новое значение к предыдущему вместо замены Это.

$digits = array();

foreach($results as $row){
    $first= $row->first;
    $second= $row->second;
    $third= $row->third;

    if ($first == 1) { $digits[] = 'first'; }
    if ($second == 1) { $digits[] = 'second'; }
    if ($third == 1) { $digits[] =  'third'; }

$abc = implode(', ', $digits);

$tbl.=<<<EOD
<table>
 <tr>
  <td>
    $abc
  </td>    
 </tr>
</table>
<br><br>
EOD;

}
Теги:

4 ответа

1
Лучший ответ

Следующий код будет проходить через массив и добавлять "первый", "второй" или "третий" в массив $ цифр.

Это то, чего вы пытаетесь достичь?

foreach($results as $row){
    $digits = array();
    $first= $row->first;
    $second= $row->second;
    $third= $row->third;

    if ($first == 1) { $digits[] = 'first'; }
    if ($second == 1) { $digits[] = 'second'; }
    if ($third == 1) { $digits[] =  'third'; }
    print_r($digits);
    // echo implode(', ', $digits);
}
  • 0
    почти, спасибо. единственная проблема в том, что print_r ($ digits); отображает «Массив ([0] => первый)», но я хочу отобразить «первый»
  • 0
    Я обновил свой ответ. Вы можете попробовать это?
Показать ещё 7 комментариев
0

Попробуйте посмотреть, что у вас есть в $ digit.

echo var_dump($digits);

0

зачем использовать массив $ цифр?

не хватает?

$digits = '';

foreach($results as $row){
    $first= $row->first;
    $second= $row->second;
    $third= $row->third;

    if ($first == 1) { $digits = 'first'; break; }
    if ($second == 1) { $digits = 'second'; break; }
    if ($third == 1) { $digits =  'third'; break; }
}

echo $digits;
0

Попробуйте этот код.

$digits = array();

foreach ($results as $row) {

 if ($row->first == 1) {
    $digits['first'] = 'first';
 }
 if ($row->second == 1) {
    $digits['second'] = 'second';
 }
 if ($row->third == 1) {
    $digits['third'] = 'third';
 }
}

print $digits['first'];

Ещё вопросы

Сообщество Overcoder
Наверх
Меню