Intereting Posts
Получение значения комбинированного блока с использованием метода post Форма электронной почты PHP отправляет электронную почту каждую страницу обновляется php Mysql Группирование и упорядочение пользовательских сообщений вместе Обновить значения в Mysql timestamp до значения datetime. Настройка сервера WAMP для отправки электронной почты Где хранятся глобальные переменные, такие как $ _GLOBAL, $ _POST и т. Д.? Как избежать инъекций mysql с использованием PDO Запустить PHP-код из .htaccess? mysqli_num_rows () ожидает, что параметр 1 будет mysqli_result, boolean означает, что и как его можно исправить? Предотвращение дублирования в базе данных Лучший способ справиться с ошибкой 404 с перенаправлением на главную страницу Отображение pagination php 5pages Двойные кавычки не копируются нормально. Как я могу их редактировать? CURL HTTP / 1.1 403 Запретная дата Форма PHP: успешная электронная почта с заполненными полями

array_key_exists ($ key, $ array) vs! empty ($ array )

Я видел, как много людей делают первое, есть ли какое-либо преимущество в производительности, чем одно? Или это просто глазная конфета? Я лично использую последний каждый раз, поскольку он короче и лично более читабельен для меня.

    Другие ответы сосредоточены на различиях между двумя функциями. Это верно, но если исходный массив не содержит null или 0 или "" , … (пустые значения), вы можете сравнить скорость двух функций:

     <?php function makeRandomArray( $length ) { $array = array(); for ($i = 0; $i < $length; $i++) { $array[$i] = rand(1, $length); } return $array; } function benchmark( $count, $function ) { $start = microtime(true); for ($i = 0; $i < $count; $i++) { $function(); } return microtime(true) - $start; } $runs = 100000; $smallLength = 10; $small = makeRandomArray($smallLength); var_dump(benchmark($runs, function() { global $small, $smallLength; array_key_exists(rand(0, $smallLength), $small); })); var_dump(benchmark($runs, function() { global $small, $smallLength; !empty($small[rand(0, $smallLength)]); })); 

    Это дало мне следующие результаты:

    Для небольшого массива:

    • array_key_exists : float (0.18357992172241)
    • empty : float (0.072798013687134)
    • isset : float (0.070242881774902)

    Для относительного большого массива:

    • array_key_exists : float (0.57489585876465)
    • empty : float (0.0068421363830566)
    • isset : float (0,0069410800933838)

    Поэтому, если это возможно, быстрее использовать empty или isset .

     $array = array( 'foo' => null ); echo (int)!empty($array['foo']); // 0 echo (int)array_key_exists('foo', $array); // 1 

    empty($array[$key]) возвращает true, когда значение $array[$key] пуст ; empty означает "" , 0 , NULL , FALSE т. д. и т. д. и т . д. Обратите внимание, что эти значения могут иметь смысл в вашем коде.

    array_key_exists($key, $array) возвращает true, когда указанный ключ существует в массиве. Он не учитывает значение $array[$key] .

    Гораздо более быстрая альтернатива проверять наличие ключа в массиве – использовать isset($array[$key]) .

    Они оба разные

    array_key_exists($key, $array) проверяет, существует ли ключ в массиве и возвращает TRUE, если заданный ключ задан в массиве.

    в то время как

    !empty($array[$key]) Определить, пустое или нет значение переменной