Просмотр категории php

isset и array_key_exists — в чем различие?

array key exists

Многие пхпшники недоумевают зачем сделана функция array_key_exists, когда есть обычный isset.
Проверочный код:

$testArray = array(1 =>; 'Первый', 'second' => 'Второй');
var_dump(isset($testArray[1]));            // =>; bool(true)
var_dump(array_key_exists(1, $testArray)); // => bool(true)

Если в массив попадает значение null, то тут сразу возникают отличия в их работе

$testArray = array(1 => 'Первый', 'second' => 'Второй', 3 => null);
 
var_dump(isset($testArray[3]));              // => bool(false)
var_dump(array_key_exists(3, $testArray));   // => bool(true)

В проверках следует применять array_key_exists если в массивах возможно значение null. Поведение isset в данном случае вполне оправдано, исходя из документации: «Determine if a variable is set and is not NULL«.

Полностью

  • 03.10.2011
  • php

array_map_recursive для php

В php, к сожалению, не имеется функции array_map которая могла бы рекурсивно пробежаться по массиву. Но есть кастомное решение, которое нормально работает:

function array_map_recursive($func, $array) {
    foreach ($array as $key => $val) {
        if ( is_array( $array[$key] ) ) {
            $array[$key] = array_map_recursive($func, $array[$key]);
        } else {
            $array[$key] = call_user_func( $func, $val );
        }
    }
    return $array;
}

Полностью

  • 03.01.2011
  • php

php ENUM

smartenumПри разработке приложений на связке PHP+MySql часто приходится использовать поля типа ENUM. Данный тип поля предназначен для создания списка из допустимых значений, которые перечислены спецификации столбца. Стоит отметить, что в базе поле с перечислением хранится как число, что обеспечивает высокую скорость работы.

При взаимодействии с такими полями на php, обычно используют строковое присваивание значения. Минус данного метода, очевиден — если допустить банальную опечатку, то в поле будет записано пустое значение. Если название значения в базе необходимо поменять, но придется по всему проекту делать замену.

К сожалению, в php не имеется встроенной возможности создания перечислений, как, например. в C#. Выходом из ситуации является решение на псевдо-enum классах.

Полностью

  • 02.06.2011
  • php