Булева логика на службе программиста
Я как программист напоминаю сам себе Буратино с Золотым Ключиком, который не знает, что с ним делать: нас всех учили в универе чему-нибудь и чем-нибудь, но что теперь делать со всеми этими"ключами", мало кто понимает, и я к ним чаще всего не отношусь.
Обратная сторона этой медали: овладев принципом работы одного из ключей, начинаешь пихать его во все дыры и щели, а когда не подходит, негодуешь, "почему это JavaScript не может работать с локальными файлами" или "FAR круче".
Какое-то время назад я овладел одним из таких ключей (вернее, мне объяснили, к какой скважине он подходит - привет Диме Калабину): применением так любимой мной в студенческие годы булевой логики, и спешу поделиться.
Сначала простой пример: вам нужно пробежаться по массиву в цикле и, помимо прочих действий, узнать, была ли хоть в одном подэлементе единица. Используем правила A OR 0 = A, А OR 1 = 1.
<?$A = false;
for($i=0; $i<sizeof($data); $i++)
{
...
$A = $A ¦¦ $data[$i]["field"];
/* либо */
$A ¦= $data[$i]["field"];
}
?>
2 комментов:
-1 за невнимателность.
Видел "помимо прочих действий"? А кому надо найти единицу в начале, тот вынырнет из глубин с помощью операторов управления циклом?
Чтобы превентить разногласия, скажу, что я использую этот приём, чтобы, делая много запросов к базе в цикле, узнать, были ли в принципе ошибки или нет, при этом ошибка не должна останавливать цикл:
$error |= $db->fError;
Отправить комментарий