За последние 24 часа нас посетили 19334 программиста и 1615 роботов. Сейчас ищут 920 программистов ...

Передача параметров с командной строки

Тема в разделе "Прочие вопросы по PHP", создана пользователем sasha_adm, 27 фев 2014.

  1. sasha_adm

    sasha_adm Новичок

    С нами с:
    27 фев 2014
    Сообщения:
    4
    Симпатии:
    0
    Подскажите как передать с командной строки Ubuntu параметры. Параметры принимаются таким образом:
    $params = array(
    'p::' => 'text::',
    'd::' => 'text2::',
    );
    $options = getopt( implode('', array_keys($params)), $params );
    Параметр который должен записаться в 'text2' состоит из двух слов. Как в скрипте его вывести в двухмерный массив?
    Чтоб можно было обратится:
    $text2["param"]["param"];
    Если не понятно объяснил, то переспрашивайте. Спасибо
     
  2. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    1. Покажи, какие параметры передаешь, как.

    2.
    Вот это не понятно, другими словами опиши подробней.

    Проблем в том, чтобы передать два слова?

    3. Зачем заморачиваться с array_keys и implode, когда проще написать $options = getopt('p::d::', $params);?
     
  3. sasha_adm

    sasha_adm Новичок

    С нами с:
    27 фев 2014
    Сообщения:
    4
    Симпатии:
    0
    в командной строке я должен вызвать файл: php index.php --name param --where param param.
    В файле принимается аргумент name[param] и where[param][param].
    С name[param] - всё работает, а where[param][param] принимается только первый параметр, а мне надо чтоб два
     
  4. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Всё равно не въезжаю, как ты пытаешься передать массив массивов (и зачем). Чтобы передать два слова, нужно взять их в кавычки
    Код (Text):
    1. php index.php --name=param --where="param param"
    в этом случае в массиве $options будут ключи
    Код (Text):
    1. $options['name']=>'param',
    2. $options['where']=>'param param'
     
  5. sasha_adm

    sasha_adm Новичок

    С нами с:
    27 фев 2014
    Сообщения:
    4
    Симпатии:
    0
    Ассоциативный массив - where[param][param] - where[param=>value]. Мне нужно через командную строку задать адрес ячейки в ассоциативном массиве. "param param" - это будет строка, а мне надо два параметра. Я думаю нужно что-то здесь сделать - $options = getopt( implode('', array_keys($params)), $params );
     
  6. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    ну так передай два параметра (это всегда строки) как-нибудь так
    php index.php --param1=value1 --param2=value2
    Код (PHP):
    1. $options = getopt('', array('param1::','param2::'));
    тогда в $options будет
    Код (Text):
    1. $options['param1']='value1',
    2. $options['param2']='value2'
     
  7. sasha_adm

    sasha_adm Новичок

    С нами с:
    27 фев 2014
    Сообщения:
    4
    Симпатии:
    0
    Я б с удовольствием, но мне на работе поставили именно такое задание. Во так точнее --where author "Ray Bradbury".
     
  8. YSandro

    YSandro Старожил

    С нами с:
    7 апр 2011
    Сообщения:
    2.523
    Симпатии:
    2
    Ну тогда, по-моему, тут не подойдет функция getopt. Можно параметры брать из переменной $argv. В $argv[0] будет всегда имя выполняемого скрипта, а далее по очереди параметры.