Форум успешных вебмастеров - GoFuckBiz.com

  Форум успешных вебмастеров - GoFuckBiz.com > Бизнес-решения > Скрипты, программы и технические решения
Дата
USD/RUB58.7820
BTC/USD0.0000
Скрипты, программы и технические решения Обсуждаем скрипты, программы и новые технологии.

Закрытая тема
Опции темы Опции просмотра
Старый 05.07.2010, 05:54   #1
qazxcvbnm
Ниибаца крутой програмер
 
Аватар для qazxcvbnm
 
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
По умолчанию вынести код в функцию

есть такой код для ввода данных через консоль

PHP код:
echo "\r\n"."Folder address 1             > ";

$parameterfopen("php://stdin""r");

$folder_address_1 trim(fgets($parameter));


echo 
"\r\n"."Folder address 2             > ";

$parameterfopen("php://stdin""r");

$folder_address_2 trim(fgets($parameter));


echo 
"\r\n"."Folder address 3             > ";

$parameterfopen("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

меня интересует именно как создавать переменные из строк и возвращать их в скрипт, при том что они НЕ появляются до диалога ввода данных
qazxcvbnm вне форума  
Старый 05.07.2010, 06:32   #2
qazxcvbnm
Ниибаца крутой програмер
 
Аватар для qazxcvbnm
 
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
ТС -->
автор темы ТС По умолчанию

про создание переменных написано тут http://omsk777.ru/dollar.html

а как внедрить переменные из функции в скрипт ? global'ом ? или есть другой способ ?
qazxcvbnm вне форума  
Старый 05.07.2010, 07:22   #3
0xDEAD
Senior Member
 
Аватар для 0xDEAD
 
Регистрация: 03.11.2009
Сообщений: 152
Бабло: $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;
        
$parameterfopen("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;     

?>
0xDEAD вне форума  
Старый 05.07.2010, 07:29   #4
qazxcvbnm
Ниибаца крутой програмер
 
Аватар для qazxcvbnm
 
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от 0xDEAD Посмотреть сообщение
Только не проще ли вернуть список папок из функции как array()?
переменные разные, папки это пример

Цитата:
Сообщение от 0xDEAD Посмотреть сообщение
Зачем срать в несчастные глобалсы?
qazxcvbnm вне форума  
Старый 05.07.2010, 07:39   #5
0xDEAD
Senior Member
 
Аватар для 0xDEAD
 
Регистрация: 03.11.2009
Сообщений: 152
Бабло: $20330
По умолчанию

Цитата:
Сообщение от qazxcvbnm Посмотреть сообщение


переменные разные, папки это пример
Тем более, проще их в массиве обрабатывать, нежели по глобалсам шариться
0xDEAD вне форума  
Старый 05.07.2010, 09:21   #6
qazxcvbnm
Ниибаца крутой програмер
 
Аватар для qazxcvbnm
 
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
ТС -->
автор темы ТС По умолчанию

Цитата:
Сообщение от 0xDEAD Посмотреть сообщение
Тем более, проще их в массиве обрабатывать, нежели по глобалсам шариться
так я вобщето не против, просто не знаю как внедрить список переменных из функции в скрипт, чтобы их значения сохранились
$result[] ... а потом поочерёдное присваивание не интересует, мне надо сразу чтобы вернулся список переменных
qazxcvbnm вне форума  
Старый 05.07.2010, 10:11   #7
qazxcvbnm
Ниибаца крутой програмер
 
Аватар для qazxcvbnm
 
Регистрация: 04.08.2009
Сообщений: 904
Бабло: $177555
ТС -->
автор темы ТС По умолчанию

простой include кода без функций после создания массива приглашений
qazxcvbnm вне форума  
Старый 05.07.2010, 11:12   #8
oso
кодер
 
Аватар для oso
 
Регистрация: 21.01.2008
Сообщений: 316
Бабло: $69585
По умолчанию

может так?
PHP код:
<?php
....
list(
$var1,$var2,$var3,$var4) = my_function();
__________________
php скрипты от $25 Отзывы: 2013-2011, 2010, 2009. acя: 384 846 ноль два шесть
oso вне форума  
Старый 05.07.2010, 11:59   #9
chesser
автоматизирую интернеты
 
Аватар для chesser
 
Регистрация: 05.07.2009
Адрес: chesser.ru
Сообщений: 3,382
Бабло: $470735
По умолчанию

Цитата:
Сообщение от oso Посмотреть сообщение
может так?
PHP код:
<?php
....
list(
$var1,$var2,$var3,$var4) = my_function();
а если у него там 1000 папок?
я бы функцией вернул ассоциативный массив: в ключе название, в значениях - то, что надо вернуть. А дальше хочешь в переменной работай, хочет extract
решений с include не удачное,
0xDEAD вроде нормальный пример дал
__________________
USA и NL серверы и VPS | wiki | блог | Drupal | NginxТДС
Ave, Google, morituri te salutant! © chesser
chesser вне форума  
Старый 05.07.2010, 20:18   #10
qazxcvbnm
Ниибаца крутой програмер
 
Аватар для qazxcvbnm
 
Регистрация: 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'); 
qazxcvbnm вне форума