<MyRusakov.ru />

Программирование на Python с Нуля до Гуру

Программирование на Python с Нуля до Гуру

Данный курс научит Вас программировать на языке Python, который крайне желательно знать любому, кто хоть иногда имеет дело с компьютерами. Курс состоит из 6 разделов, в которых Вы с нуля освоите этот язык и сможете создавать самые разные программы для самых разных задач любой сложности.

К курсу прилагается множество упражнений и все исходники из уроков.

Наконец, Вы получите ещё несколько бонусов: "Создание калькулятора на Python", "Создание игры на Python" и "Правильная работа со справочником".

Подробнее
Подписка

Подписавшись по E-mail, Вы будете получать уведомления о новых статьях.

Подписка Подписаться

Добавляйтесь ко мне в друзья ВКонтакте! Отзывы о сайте и обо мне оставляйте в моей группе.

Мой аккаунт Мой аккаунт Моя группа
Опрос

Каким движком Вы предпочитаете пользоваться?

Как проверить является ли массив списком или хеш-таблицей?

Как проверить является ли массив списком или хеш-таблицей?

Массивы в PHP - многолики. Они могут быть как списками так и хеш-таблицами. Так как же определить когда массив в PHP - список, а когда хеш-таблица?

Для начала определимся с терминологией. Списком будем называть массив, содержащий значения, ключи у которых последовательно идут один за другим, начинаясь с 0. Значения списка могу состоять как из простых типов, так и из других списков. Вот примеры массивов - списков:

$list1 = ['a', 'b', 'c', 'd'];

$list2 = [
    0 => 'my',
    1 => 'ru',
    2 => ['sa' => 'kov']
];

Хеш-таблицей будем считать массив, который:

  1. Содержит один или более не числовых ключей;
  2. Ключи непоследовательны или не начинаются с нуля.

Примеры массивов - хеш-таблиц в PHP:

$hash1 = [
    'my' => 1,
    'rus' => true
];

$hash2 = [
    2012  => 'HTML Basics',
    2014  => 'PHP Guru',
    2016  => 'React'
];

$hash3 = [
    'string',
    'options' => [ 'debug' => false ]
];

А вот непосредственно сами функции, с помощью, которых мы будем проверять массивы:

function array_is_list(array $value)
{
    // если $value не массив возвращаем ложь
    if (!is_array($value)) return false;

    // если массив пустой возвращаем ложь
    if (!$value) return false;

    // сравниваем значения массива и массив
    // в случае списка это будет одно и тоже
    return (array_values($value) === $value);
}



function array_is_hash_table(array $value)
{
    // если $value не массив возвращаем ложь
    if (!is_array($value)) return false;

    // если массив пустой возвращаем ложь
    if (!$value) return false;

    // сравниваем значения массива и массив
    // в случае хеш-таблицы это будут разные значения
    return (array_values($value) !== $value);
}

Функции для тестирования:

function test_list(array $array) {
    print sprintf("Является ли массив %s списком? - %s\n",
          // "[" . join(",",$array) . "]",
          print_r( $array, 1),
          array_is_list($array) ? "Да" : "Нет");
}

function test_hash_table(array $array) {
    print sprintf("Является ли массив %s хеш-таблицей - %s\n",
          // "[" . join(",",$array) . "]",
          print_r( $array, 1),
          array_is_hash_table($array) ? "Да" : "Нет");
}


test_list($list1);
test_list($list2);

print(PHP_EOL);

test_hash_table($hash1);
test_hash_table($hash2);
test_hash_table($hash3);
test_hash_table($list1);

Результат:

Является ли массив Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
)
 списком? - Да
 
Является ли массив Array
(
    [0] => my
    [1] => ru
    [2] => Array
        (
            [sa] => kov
        )

)
 списком? - Да
 

Является ли массив Array
(
    [my] => 1
    [rus] => 1
)
 хеш-таблицей - Да
 
Является ли массив Array
(
    [2012] => HTML Basics
    [2014] => PHP Guru
    [2016] => React
)
 хеш-таблицей - Да
 
Является ли массив Array
(
    [0] => string
    [options] => Array
        (
            [debug] => 1
        )

)
 хеш-таблицей - Да
 
Является ли массив Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
)
 хеш-таблицей - Нет

Вот так можно проверить, является ли массив списком или хеш-таблицей.

Копирование материалов разрешается только с указанием автора (Михаил Русаков) и индексируемой прямой ссылкой на сайт (http://myrusakov.ru)!

Добавляйтесь ко мне в друзья ВКонтакте: http://vk.com/myrusakov.
Если Вы хотите дать оценку мне и моей работе, то напишите её в моей группе: http://vk.com/rusakovmy.

Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

  1. Кнопка:

    Она выглядит вот так: Как создать свой сайт

  2. Текстовая ссылка:

    Она выглядит вот так: Как создать свой сайт

  3. BB-код ссылки для форумов (например, можете поставить её в подписи):

Комментарии (0):

Для добавления комментариев надо войти в систему.
Если Вы ещё не зарегистрированы на сайте, то сначала зарегистрируйтесь.