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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Маршрутизация, Вызов метода класса 
V
    Опции темы
ZneP
Дата 26.8.2010, 08:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 15.7.2008
Где: Россия, Москва

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



Код

function whats_up() {
             $num = func_num_args();  // количество переданных аргументов
             $args = func_get_args();  // массив аргументов
             foreach($args as $arg)
                echo $arg;
    }


// вызов
whats_up(1, "hello", 2, "asdfasdf", array(1,2,3), 3, .......);


Проверено лично

Если нужно, чтобы передавались значения с ключами, например:
$first = 1, $str = "hello", $second = 2, ....

то тогда лучше передавать ассоциативный массив

Это сообщение отредактировал(а) ZneP - 26.8.2010, 09:03
PM MAIL ICQ Skype   Вверх
gta4kv
Дата 26.8.2010, 12:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Цитата(Just123 @ 26.8.2010,  02:07)
Как передать аргументы в функцию, если общее количество аргументов не известно?

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


Шустрый
*


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

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



gta4kv, а как именно это сделать можно? С помощью call_user_func_array никак не получается передать массив...Вы не могли бы привести пример?
PM MAIL   Вверх
gta4kv
Дата 26.8.2010, 18:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Зачем извращаться.

http://ru.php.net/manual/en/function.call-user-func.php

Код

<?php
function mySillyFunction( $params )
{
    var_dump( $params );
}
$mySettings = array( '1', '2', '3' );
call_user_func( 'mySillyFunction', $mySettings );
?>


Добавлено @ 18:13
Код не тестировал.

Это сообщение отредактировал(а) gta4kv - 26.8.2010, 18:16
PM MAIL   Вверх
Just123
Дата 26.8.2010, 18:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



gta4kv, Спасибо большое smile 
PM MAIL   Вверх
Just123
Дата 27.8.2010, 00:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Я дико извиняюсь, что снова поднимаю эту тему, но мучает меня немного один вопрос.

Таким способом мы можем только передать массив содержащий все параметры, это немного не удобно.

Нельзя никак передать 2, 3, n аргументов?

т.е. сейчас функция должна иметь следующий вид:
Код

function hello($args) {
echo "Привет $args[0]";
echo "Как дела $args[1] ?";

}



Нельзя никак передать аргументы так, чтобы функция записывалась следующим образом:

Код

function hello ($name1, $name2) {
echo "Привет $name1";
echo "Как дела $name2 ?";
}


?
PM MAIL   Вверх
gta4kv
Дата 27.8.2010, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Это не имеет смысла, если вам нужны «реальные» имена, то ассоциативный массив вам в помощь.
PM MAIL   Вверх
bars80080
Дата 27.8.2010, 00:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


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



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

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



есть: func_get_args()
PM MAIL WWW   Вверх
Just123
Дата 27.8.2010, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



bars80080, поправьте меня, если я ошибаюсь, но с помощью функции func_get_args(), можно узнать лишь то, какие аргументы были переданы функции.

gta4kv, Почему это не имеет смысла? Ассоциативный массив тут не подойдёт т.е. названия ключей заранее не известны, они могут быть любыми. 

Это сообщение отредактировал(а) Just123 - 27.8.2010, 00:55
PM MAIL   Вверх
gta4kv
Дата 27.8.2010, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Какая реальная разница между записью $name[ 1 ] и $name1?

Добавлено через 2 минуты и 6 секунд
Цитата(Just123 @ 27.8.2010,  00:54)
bars80080, поправьте меня, если я ошибаюсь, но с помощью функции func_get_args(), можно узнать лишь то, какие аргументы были переданы функции.

var_export()
PM MAIL   Вверх
Just123
Дата 27.8.2010, 01:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Код

Какая реальная разница между записью $name[ 1 ] и $name1?


Никакой, но а если там будут к  примеру $name, $sex, $mail, $age ?


PM MAIL   Вверх
gta4kv
Дата 27.8.2010, 01:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



и что?
PM MAIL   Вверх
Just123
Дата 27.8.2010, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



Цитата

и что?

В смысле и что? Загвоздка как раз в этом, чтобы передать не массив $args, а переменные типа $name, $age  и т.д.
PM MAIL   Вверх
gta4kv
Дата 27.8.2010, 11:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Walking around mad.
***


Профиль
Группа: Завсегдатай
Сообщений: 1868
Регистрация: 25.7.2006

Репутация: 21
Всего: 91



Цитата(gta4kv @ 27.8.2010,  00:57)
var_export()

писал еще вчера.
PM MAIL   Вверх
ZneP
Дата 27.8.2010, 13:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 15.7.2008
Где: Россия, Москва

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



Цитата(Just123 @  27.8.2010,  00:54 Найти цитируемый пост)
Ассоциативный массив тут не подойдёт т.е. названия ключей заранее не известны, они могут быть любыми. 

И?

Код

function Func1($name = "", $sex = "m", $age = 0) {
echo "Имя - ".$name;
echo "Возраст - ".$age;
}

function Func2($params = array()) {
echo "Имя - ".$params['name'];
echo "Возраст - ".$params['age'];
}

Func1("Маша", "f", 21);

$params = array("name" => "Маша", "sex" => "f", "age" => 21);
Func2($params);

Где разница то?

Если кол-во параметров не известно - используем ассоциативный массив.
Если названия параметров не известны:
foreach ($params as $key => $value) {
// $key = name, $value = Маша
// и тд
}
PM MAIL ICQ Skype   Вверх
Страницы: (3) Все 1 [2] 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.2214 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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