Всем привет. Только начал изучать php. Такой вопрос, как напишить функцию, которая составит и выведет в браузер таблицу истинности для для логического операторов && вот что я написал. Код (Text): <?php function logic($x, $y) { echo '<table border="1"<tr><td> && </td><td>'; echo $x; echo '</td>'; echo '<td>'; echo $y; echo '</td></tr>'; echo '<tr><td>'; echo $x; echo '</td>'; echo '<td>'; if ($x == 0 ) { echo 0; } else { echo 1; } echo '</td>'; echo '<td>'; if ($y == 0 || $x == 0 ) { echo 0; } else { echo 1; } echo '</td></tr>'; echo '<tr><td>'; echo $y; echo '</td>'; echo '<td>'; if ($y == 0 || $x == 0 ) { echo 0; } else { echo 1; } echo '</td>'; echo '<td>'; if ($y == 0 ) { echo 0; } else { echo 1; } echo '</td></tr></table>'; } echo logic(0,1); echo '<br>'; echo '<br>'; echo logic(1,1); echo '<br>'; echo '<br>'; echo logic(1,0); echo '<br>'; echo '<br>'; echo logic(0,0); ?> Все работает, но по моему это какой то изврат и можно сделать намного проще.
Можно вызвать один раз функцию передав массив с нужными данными, не сказать что прям проще сделал, но просто ради интереса)) PHP: print logic2( [ [0,1], [1,1], [1,0], [0,0]] ); function logic2( $xy ) { if ( !is_array( $xy ) ) return; $limit = count($xy); if ( $limit <= 0 ) return; $html = ''; for ( $i = 0; $i < $limit; $i++) { $x = isset($xy[$i][0]) ? $xy[$i][0] : 0; $y = isset($xy[$i][1]) ? $xy[$i][1] : 0; $html .= '<table border="1" cellpadding="5" cellspacing="2" cols="3" frame="void" width="100">'; //- $html .= '<tr>'; $html .= '<td> && </td>'; $html .= '<td>'.$x.'</td>'; $html .= '<td>'.$y.'</td>'; $html .= '</tr>'; //- $html .= '<tr>'; $html .= '<td>'.$x.'</td>'; $html .= '<td>'.($x == 0 ? '0' : '1').'</td>'; $html .= '<td>'.( ($y == 0 || $x == 0) ? '0' : '1').'</td>'; $html .= '</tr>'; //- $html .= '<tr>'; $html .= '<td>'.$y.'</td>'; $html .= '<td>'.( ($y == 0 || $x == 0) ? '0' : '1').'</td>'; $html .= '<td>'.($y == 0 ? '0' : '1').'</td>'; $html .= '</tr>'; $html .= '</table><br />'; } unset($i, $limit, $x, $y, $xy); return $html; }