Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Ассоциативный массив в действии PHP: Ассоциативные массивы

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

<?php

$filepath = '/path/to/index.php';
$fileinfo = getFileInfo($filepath);
// [
//     'extension' => 'php',
//     'filename' => 'index.php'
// ];

Для начала нам нужно извлечь имя файла. Это можно сделать, используя метод explode().

<?php

// Разделяем путь на промежуточные директории и файл
$pathParts = explode('/', $filepath);
// Извлекаем имя файла
// array_key_last() возвращает последний ключ массива
$filename = $pathParts[array_key_last($pathParts)]; 

Затем, точно таким же способом, можно получить и расширение:

<?php

$nameParts = explode('.', $filename);

$extension = $nameParts[array_key_last($nameParts)];

Теперь, объединяя все вместе, реализуем нужную функцию:

<?php

function getFileInfo($filepath)
{
    $pathParts = explode('/', $filepath);
    $filename = $pathParts[array_key_last($pathParts)]; 
    $nameParts = explode('.', $filename);
    $extension = $nameParts[array_key_last($nameParts)];

    // В значения вместо переменных подставятся нужные значения
    $info = ['filename' => $filename, 'extension' => $extension];

    return $info;
}

В примере выше ассоциативный массив создается сразу, когда все данные уже готовы. Иногда делают по другому, инициализируют массив в самом начале и постепенно наполняют его данными:

<?php 

function getFileInfo($filepath)
{
    // Инициализация массива
    $info = [];

    $pathParts = explode('/', $filepath);
    $filename = $pathParts[array_key_last($pathParts)]; 
    $info['filename'] = $filename;

    $nameParts = explode('.', $filename);
    $extension = $nameParts[array_key_last($nameParts)];
    $info['extension'] = $extension;

    return $info;
}

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

<?php

// Добавляем свойство в объект только если расширение существует
if ($extension) {
    $info['extension'] = $extension;
}

Такое встречается значительно реже, но все же бывает.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты.

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Для полного доступа к курсу нужна профессиональная подписка

Профессиональная подписка откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
900
упражнения
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно.

  • 120 курсов, 2000+ часов теории
  • 900 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff
Рекомендуемые программы

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

Иконка программы PHP-разработчик
Профессия
Разработка веб-приложений на Laravel
22 сентября 8 месяцев

Есть вопрос или хотите участвовать в обсуждении?

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»