0
86
2015-08-28

Белый и черный список для исключения ключей в PHP

Рассмотрим две php функции которые позволят Вам включать и исключать ключи массива
Понравилась страница? Поставь свою оценку!
PLUGIN_STAR_RATINGS.SCORE_TEXTPLUGIN_STAR_RATINGS.VOTES_TEXT

Две служебные функции, которые вы обязательно захотите добавить в свой арсенал, будут array_keys_whitelist()и array_keys_blacklist() Во-первых, убедитесь, что разрешены только конкретные элементы в ассоциативном массиве: array_keys_whitelist().

/**
 * Filter an array based on a white list of keys
 *
 * @param array $array
 * @param array $keys
 *
 * @return array
 */
function array_keys_whitelist( array $array, array $keys ) {
   foreach ( $array as $key => $value ) {
      if ( ! in_array( $key, $keys ) ) {
         unset( $array[ $key ] );
      }
   }

   return $array;
}

Эта функция полезна для таких вещей, как возврат определенного набора значений из глобального $_POST массива.

С другой стороны, функция обеспечит удаление всех запрещенных элементов в ассоциативном массиве: array_keys_blacklist()

 /**
 * Filter an array based on a black list of keys
 *
 * @param array $array
 * @param array $keys
 *
 * @return array
 */
function array_keys_blacklist( array $array, array $keys ) {
   foreach ( $array as $key => $value ) {
      if ( in_array( $key, $keys ) ) {
         unset( $array[ $key ] );
      }
   }

   return $array;
}

Хотя обычно лучше занести в белый список, чем в черный список, эта функция может быть полезна, когда вам нужно создать исключение из правила.


Обновление: 28 августа 2015 г.

Я недавно понял, что array_keys_whitelist может быть написано более коротким способом и без foreachпетли. Вот более краткая версия:

/**
 * Filter an array based on a white list of keys
 *
 * @param array $array
 * @param array $keys
 *
 * @return array
 */
function array_keys_whitelist( array $array, array $keys ) {
   return array_intersect_key( $array, array_flip( $keys ) );
}




Статья была переведена для блога TechBlog.SDStudio.top

Источник: wpscholar.com