Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> запихнуть в функцию неизвестное число аргументов 
V
    Опции темы
bars80080
Дата 28.8.2009, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



что-то я туплю, но вроде раньше с этим не сталкивался

есть такие функции, как sprintf ( var1, var2 [, var3, var4 ...] )
где два аргумента обязательны, а следующих сколько хочешь
у меня есть массив с неизвестным числом элементов, их нужно вставить на эти самые var2, var3, var4...


как быть?

не eval же в конце концов делать?
PM MAIL WWW   Вверх
azesmcar
Дата 28.8.2009, 16:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



...что-то я вопрос неправильно понял

Это сообщение отредактировал(а) azesmcar - 28.8.2009, 16:34
PM   Вверх
bars80080
Дата 28.8.2009, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



да нет, мне наоборот нужно дать функции ряд аргументов, а сколько неизвестно заранее

Код

$a = array('qwe','erty','rtuy');
$f = '1: %s, 2: %s, 3: %s';

foo($f, $a);

function foo($f, $a) {
    $b = sprintf($f, $a[0], $a[1], $a[2]);
    echo $b;
}

как получив массив $a впихнуть его на место аргументов?
PM MAIL WWW   Вверх
azesmcar
Дата 28.8.2009, 16:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения

Репутация: 12
Всего: 211



bars80080

да, поздно понял smile в отпуск пора..тебе call_user_func_array нужен.
Код

<?php
    echo call_user_func_array('sprintf', array('%s - %s', 'hello', 'world'));
?>

PM   Вверх
bars80080
Дата 28.8.2009, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



ага, уже сам раскопал:

Код

<?php
$a = array('qwe','erty','asda','dfg');
$f = '1: %s, 2: %s, 3: %s, 4: %s';

foo($f, $a);

function foo($f, $a) {
    array_unshift($a, $f);
    $b = call_user_func_array('sprintf', $a);
    echo $b;
}

?>

PM MAIL WWW   Вверх
Dima50
Дата 30.8.2009, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 78
Регистрация: 20.10.2007

Репутация: 1
Всего: 2



Цитата(bars80080 @  28.8.2009,  16:45 Найти цитируемый пост)
ага, уже сам раскопал:


есть стандартные инструменты:
PHP manual -> Функции -> аргументы функции

Списки аргументов переменной длины
PHP 4 и выше поддерживает списки аргументов переменной длины для функций, определяемых пользователем. Реализация этой возможности достаточно прозрачна и заключается в использовании функций func_num_args(), func_get_arg() и func_get_args(). 

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

Добавлено через 9 минут и 44 секунды
Цитата(bars80080 @  28.8.2009,  16:13 Найти цитируемый пост)
у меня есть массив с неизвестным числом элементов, их нужно вставить на эти самые var2, var3, var4..


Ooops. Sorry невнимательно прочитал.

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0774 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.