|
| Дата |
|
USD/RUB | 93.4409 | BTC/USD | 64497.3871 |
|
|
|
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии. |
05.07.2010, 05:54
|
#1
|
Ниибаца крутой програмер
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
|
вынести код в функцию
есть такой код для ввода данных через консоль
PHP код:
echo "\r\n"."Folder address 1 > ";
$parameter= fopen("php://stdin", "r");
$folder_address_1 = trim(fgets($parameter));
echo "\r\n"."Folder address 2 > ";
$parameter= fopen("php://stdin", "r");
$folder_address_2 = trim(fgets($parameter));
echo "\r\n"."Folder address 3 > ";
$parameter= fopen("php://stdin", "r");
$folder_address_3 = trim(fgets($parameter));
очевидно что тут повторяющиеся конструкции, просто меняется название приглашения и параметра
есть ли возможноть создать массив типа
$array[] = "Folder address 1 > ";
$array[] = "Folder address 2 > ";
$array[] = "Folder address 3 > ";
а потом вызвать функцию и получить список переменных ?
$folder_address_1
$folder_address_2
$folder_address_3
меня интересует именно как создавать переменные из строк и возвращать их в скрипт, при том что они НЕ появляются до диалога ввода данных
|
|
|
05.07.2010, 06:32
|
#2
|
Ниибаца крутой програмер
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
ТС -->
|
ТС
про создание переменных написано тут http://omsk777.ru/dollar.html
а как внедрить переменные из функции в скрипт ? global'ом ? или есть другой способ ?
|
|
|
05.07.2010, 07:22
|
#3
|
Senior Member
Регистрация: 03.11.2009
Сообщений: 151
Бабло: $20330
|
Как вариант запихивать в GLOBALS
PHP код:
<?php
function ask_folder_addresses($prompts) {
for($i = 0; $i < count($prompts); $i++) {
echo PHP_EOL.$prompts[$i];
$parameter = fopen("php://stdin", "r");
$name = "folder_address_".($i + 1);
$GLOBALS[$name] = trim(fgets($parameter));
}
}
//Usage sample:
$prompts = array("Folder address 1 >", "Folder address 2 > ", "Folder address 3 >");
ask_folder_addresses($prompts);
echo $folder_address_1.PHP_EOL;
echo $folder_address_2.PHP_EOL;
echo $folder_address_3.PHP_EOL;
?>
Только не проще ли вернуть список папок из функции как array()? Зачем срать в несчастные глобалсы?
PHP код:
<?php
function ask_folder_addresses($prompts) {
$folder_names = array();
foreach($prompts as $prompt) {
echo PHP_EOL.$prompt;
$parameter= fopen("php://stdin", "r");
$folder_names[] = trim(fgets($parameter));
}
return $folder_names;
}
//Usage sample:
$prompts = array("Folder address 1 >", "Folder address 2 > ", "Folder address 3 >");
$folders = ask_folder_addresses($prompts);
foreach($folders as $folder)
echo $folder.PHP_EOL;
?>
|
|
|
05.07.2010, 07:29
|
#4
|
Ниибаца крутой програмер
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
ТС -->
|
ТС
Цитата:
Сообщение от 0xDEAD
Только не проще ли вернуть список папок из функции как array()?
|
переменные разные, папки это пример
Цитата:
Сообщение от 0xDEAD
Зачем срать в несчастные глобалсы?
|
|
|
|
05.07.2010, 07:39
|
#5
|
Senior Member
Регистрация: 03.11.2009
Сообщений: 151
Бабло: $20330
|
Цитата:
Сообщение от qazxcvbnm
переменные разные, папки это пример
|
Тем более, проще их в массиве обрабатывать, нежели по глобалсам шариться
|
|
|
05.07.2010, 09:21
|
#6
|
Ниибаца крутой програмер
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
ТС -->
|
ТС
Цитата:
Сообщение от 0xDEAD
Тем более, проще их в массиве обрабатывать, нежели по глобалсам шариться
|
так я вобщето не против, просто не знаю как внедрить список переменных из функции в скрипт, чтобы их значения сохранились
$result[] ... а потом поочерёдное присваивание не интересует, мне надо сразу чтобы вернулся список переменных
|
|
|
05.07.2010, 10:11
|
#7
|
Ниибаца крутой програмер
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
ТС -->
|
ТС
простой include кода без функций после создания массива приглашений
|
|
|
05.07.2010, 11:12
|
#8
|
кодер
Регистрация: 21.01.2008
Сообщений: 315
Бабло: $69585
|
может так?
PHP код:
<?php
....
list($var1,$var2,$var3,$var4) = my_function();
__________________
php скрипты от $25 Отзывы: 2013-2011, 2010, 2009. acя: 384 846 ноль два шесть
|
|
|
05.07.2010, 11:59
|
#9
|
автоматизирую интернеты
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,362
Бабло: $470735
|
Цитата:
Сообщение от oso
может так?
PHP код:
<?php .... list($var1,$var2,$var3,$var4) = my_function();
|
а если у него там 1000 папок?
я бы функцией вернул ассоциативный массив: в ключе название, в значениях - то, что надо вернуть. А дальше хочешь в переменной работай, хочет extract
решений с include не удачное,
0xDEAD вроде нормальный пример дал
|
|
|
05.07.2010, 20:18
|
#10
|
Ниибаца крутой програмер
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
ТС -->
|
ТС
я ж написал, что простой инклуд помог, даже в глобалсы заносить ничего не надо
во внешнем файле просто код без функций
conole_input.php
PHP код:
<?php
for ($array_c=0; $array_c<sizeof($array); $array_c++)
{
echo PHP_EOL.$array[$array_c];
$parameter = fopen("php://stdin", "r");
$array[$array_c] = str_replace(" ", "_", strtolower(preg_replace("/\s+>\s/", "", $array[$array_c])));
$$array[$array_c] = trim(fgets($parameter));
}
?>
PHP код:
$array[] = "Folder address > ";
$array[] = "Ohuennaya peremennaya > ";
$array[] = "Oyaebu drugaya peremennaya > ";
include('console_input.php');
|
|
|
|