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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> sprintf , операции над аргументами 
V
    Опции темы
Kallisto
Дата 6.9.2009, 12:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата(bars80080 @ 27.8.2009,  17:29)
вот такая вот задачка:

есть у нас функция, она принимает в себя значения формата, производит какие-то действия и наполняет результирующую строку данными, которые потом выдаёт. можно ли задать какие провести операции над этими данными?

к примеру,
есть функция, которая принимаетт такие аргументы:
Код

$r = myfunc("The %2\$s contains %1\$d monkeys. That's a nice %2\$s full of %1\$d monkeys.", array('numb', 'location'));

внутри функции происходит выборка из БД, а затем подстановка данных, где %1\$d заменяется на $row['numb'], а %2\$s на $row['location'].
итоговая строка выдаётся

можно ли задать дополнительный ряд операций над получаемыми данными? то есть указать, что к примеру %1\$d равно $row['numb']*10/5, или просуммировать два других значения


единственное, что придумывается - это указать аргументом имя другой функции /пользовательской/, в которую будут подставляться данные

а нет ли более простого хода?

Мне кажется тебе нужно сделать обертку для (s|v)printf'a


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

Код

function changeElement(&$arg)
{
$arg *= 2;
}

function parseString($str, $args)
{
foreach($args as &$a) changeElement($a);
vprintf($str, $args);
}

может  быть как то так?
PM MAIL   Вверх
bars80080
Дата 6.9.2009, 15:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



по факту оказалось, что количество возможных операций, которые часто приходится проводить с данными практически равно возможностям пхп, т.е. наиболее просто решение - передавать в функцию данные (или источник данных) и имя функции или метода с именем объекта, внутри которой и прописать необходимые манипуляции
PM MAIL WWW   Вверх
IZ@TOP
Дата 8.9.2009, 16:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



bars80080, т.е. все свелось к использованию самого PHP? Ну и чудненько  smile 


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

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

Внимание:

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

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

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


 




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


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

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