помощь с передачей аргументов функции

function get_tags_by_criteria($gender="%", $min_age_of_birth="%", $max_age_of_birth="%", $country="%", $region="%", $city="%", $tag="") { 

когда я просто хочу передать аргумент тега и пусть остальные по умолчанию, как я пишу?

ive попробовал это, но он не работал.

  get_tags_by_criteria("", "", "", "", "", "", computer); 

Solutions Collecting From Web of "помощь с передачей аргументов функции"

Вы можете моделировать именованные аргументы с помощью ассоциативного массива:

 function my_function($options) { extract($options); } 

затем позвоните

 my_function(array("parameter1" => "value1", "parameter2" => "value2")); 

что в сочетании с надежной проверкой и таблицей значений по умолчанию внутри функции отлично работает для меня.

Недостаток: для документирования аргументов нет соглашения phpDoc, и ваша IDE не сможет отображать доступные аргументы для вас по мере ввода. Вам нужно будет ввести доступные параметры в блок @desc который, в зависимости от вашей среды разработки, может выглядеть или не выглядеть красиво.

Один из способов решения этой проблемы – объявить все параметры в функции, но сделать все из них, кроме первого, необязательным. Первый из них может быть ассоциативным массивом, содержащим значения.

Сначала поставьте аргумент тега:

 function get_tags_by_criteria($tag="", $gender="%", $min_age_of_birth="%", $max_age_of_birth="%", $country="%", $region="%", $city="%") 

И назовите это так:

 get_tags_by_criteria(computer); 

В PHP нет именованного параметра. Обычно, если у вас более 4 параметров, и многие из них являются необязательными, вы можете использовать вместо этого массив или объект:

 function get_tags_by_criteria($args) { ... } get_tags_by_criteria(array('gender' => 'M', 'tag' => 'php')); 

Вы можете явно задать параметры, разрешенные с помощью объекта.

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

Это просто невозможно в PHP.

Структура CakePHP часто использует ассоциативные массивы для указания набора параметров. Это позволит вам указать либо отдельные параметры, либо ассоциативный массив. См. Методы поиска в классе модели в качестве примера.

Вот моя попытка сделать вашу функцию более гибкой:

 <?php function get_tags_by_criteria( $gender = '%', $min_age_of_birth = '%', $max_age_of_birth = '%', $country = '%', $region = '%', $city = '%', $tag = '') { if (is_array($gender)) { $options = $gender; $gender = '%'; // reset to default extract($options); } $msg = "gender=$gender, min_age=$min_age_of_birth, " . "max_age=$max_age_of_birth, country=$country, region=$region, " . "city=$city, tag=$tag"; return $msg; } ?> <p><?php echo get_tags_by_criteria('M'); ?></p> <p><?php echo get_tags_by_criteria('M', 10); ?></p> <p><?php echo get_tags_by_criteria(array( 'country' => 'ca', 'tag' => 'sample')); ?></p>