Как в PHP (CLI) создать массив имён, переданных через аргументы командной строки?

«Как в PHP (CLI) создать массив имён, переданных через аргументы командной строки?» — вопрос из категории PHP Core, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Да, при запуске PHP-скрипта из командной строки (CLI) можно передавать аргументы и парсить их в массив. Суперглобальный массив $_GET в CLI не работает, но есть несколько других способов.

Способ 1: Использование массива $argv Аргументы автоматически попадают в глобальный массив $argv. $argv[0] — это имя самого скрипта.

// Запуск: php script.php Alice Bob Charlie
// script.php
$names = array_slice($argv, 1); // Берём все элементы, начиная с индекса 1
print_r($names);
// Вывод: Array ( [0] => Alice [1] => Bob [2] => Charlie )

Способ 2: Использование функции getopt() для сложных параметров Позволяет парсить именованные опции (например, --names).

// Запуск: php script.php --names=John,Jane,Alex
// script.php
$options = getopt('', ['names:']); // ':' означает, что опция требует значения
if (isset($options['names'])) {
    $names = explode(',', $options['names']); // Разбиваем строку по запятой
    print_r($names);
    // Вывод: Array ( [0] => John [1] => Jane [2] => Alex )
}

Способ 3: Чтение из стандартного ввода (STDIN) Полезно, если имена передаются построчно или через пайп.

// Запуск: echo -e "AlicenBob" | php script.php
// script.php
$names = [];
while (($line = fgets(STDIN)) !== false) {
    $names[] = trim($line); // Убираем символы перевода строки
}
print_r($names);

Ключевое отличие от веб-режима: В CLI нет автоматического парсинга query-строки (?name=value). Всё управление аргументами ложится на разработчика с использованием $argv, getopt() или STDIN.