Задать вопрос
@kaxa3201

Как это чище записать?

if (array_key_exists('$gt', $filter['created_at'])) {
            $dataArray['{date_from}'] = $filter['created_at']['$gt'];
        }
        if (array_key_exists('$lt', $filter['created_at'])) {
            $dataArray['{date_to}'] = $filter['created_at']['$lt'];
        }

слишком громоздко, как написать чище?
  • Вопрос задан
  • 215 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
Специально для любителей заменять array_key_exists на isset
isset() не возвращает TRUE для ключей массива, указывающих на NULL, а array_key_exists() возвращает.


Линчно я бы не стал ничего менять. Код читается, выполняет свою функцию. Можно извратиться, и сделать цикл, или использовать неподходящую функцию. Вопрос - ЗАЧЕМ.

Если сильно постараться, то можно записать этот же код короче. Но короче - не значит чище. В подавляющем большинстве случаев получается ровно наоброт. Короткая, но абсолютно нечитаемая абракадабра. или код с ошибками. или все вместе. Ответы в этом топике служат прекрасной иллюстрацией.

Работает - ничего не трогай. Не на версисаж код пишешь
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
if (isset($filter['created_at']['$gt'])) {
   $dataArray['{date_from}'] = $filter['created_at']['$gt'];
}
if (isset($filter['created_at']['$lt'])) {
   $dataArray['{date_to}'] = $filter['created_at']['$lt'];
}
Ответ написан
Комментировать
usdglander
@usdglander Куратор тега PHP
Yipee-ki-yay
$_at = $filter['created_at'];
if (isset($_at['$gt'])) {
   $dataArray['{date_from}'] = $_at['$gt'];
}
if (isset($_at['$lt'])) {
   $dataArray['{date_to}'] = $_at['$lt'];
}
Ответ написан
@Nujabes37
:DEATH
!isset($filter['created_at']['$gt']) ?:
    $dataArray['{date_from}'] = $filter['created_at']['$gt'];
!isset($filter['created_at']['$lt']) ?:
    $dataArray['{date_to}'] = $filter['created_at']['$lt'];
Ответ написан
@green_goo
В порядке бреда:
foreach (['$gt' => '{date_from}', '$lt' => '{date_to}'] as $k => $v) {
    if (array_key_exists($k, $filter['created_at'])) {
        $dataArray[$v] = $filter['created_at'][$k];
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы