Я передаю массив $ 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;
}
Следующий код будет проходить через массив и добавлять "первый", "второй" или "третий" в массив $ цифр.
Это то, чего вы пытаетесь достичь?
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);
}
Попробуйте посмотреть, что у вас есть в $ digit.
echo var_dump($digits)
;
зачем использовать массив $ цифр?
не хватает?
$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;
Попробуйте этот код.
$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'];