Можем ли мы передать массив как параметр в любой функции в PHP?
У меня есть функция отправки почты пользователям, и я хочу передать один из ее параметров как массив идентификаторов.
Можно ли это сделать? Если да, как это можно сделать?
Предположим, что мы имеем функцию as:
function sendemail($id, $userid) {
}
В этом примере $id
должен быть массивом.
Ответы
Ответ 1
Вы можете передать массив в качестве аргумента. Он копируется по значению (или COW'd, который по сути означает для вас то же самое), поэтому вы можете array_pop()
(и аналогичный) все вам нравится на нем и не будет влиять на что-либо снаружи.
function sendemail($id, $userid){
// ...
}
sendemail(array('a', 'b', 'c'), 10);
Фактически вы можете принимать только массив, поместив его тип в подпись аргумента функции...
function sendemail(array $id, $userid){
// ...
}
Вы также можете вызвать функцию со своими аргументами в виде массива...
call_user_func_array('sendemail', array('argument1', 'argument2'));
Ответ 2
Да, вы можете безопасно передать массив в качестве параметра.
Ответ 3
Что нужно разъяснить здесь.
Просто передайте массив, когда вы вызываете эту функцию.
function sendemail($id,$userid){
Some Process....
}
$id=array(1,2);
sendmail($id,$userid);
Ответ 4
Да, вы можете это сделать.
function sendemail($id_list,$userid){
foreach($id_list as $id) {
printf("$id\n"); // Will run twice, once outputting id1, then id2
}
}
$idl = Array("id1", "id2");
$uid = "userID";
sendemail($idl, $uid);
Ответ 5
function sendemail(Array $id,$userid){ // forces $id must be an array
Some Process....
}
$ids = array(121,122,123);
sendmail($ids, $userId);
Ответ 6
Не отличается от любой другой переменной, например
function sendemail($id,$userid){
echo $arr["foo"];
}
$arr = array("foo" => "bar");
sendemail($arr, $userid);
Ответ 7
В php 5 вы также можете указать тип передаваемой переменной:
function sendemail(array $id, $userid){
//function body
}
См. тип подсказки.
Ответ 8
Поскольку PHP динамически слабо типизирован, вы можете передать любую переменную функции, и функция попытается сделать все возможное с ней.
Следовательно, вы действительно можете передавать массивы в качестве параметров.
Ответ 9
Да, мы можем передать массивы функции.
$arr = array("a" => "first", "b" => "second", "c" => "third");
function user_defined($item, $key)
{
echo $key."-".$item."<br/>";
}
array_walk($arr, ‘user_defined’);
Здесь мы можем найти больше функций массива
http://skillrow.com/array-functions-in-php-part1/
Ответ 10
еще более круто, вы можете передать переменное количество параметров в такую функцию:
function sendmail(...$users){
foreach($users as $user){
}
}
sendmail('user1','user2','user3');
Ответ 11
Я написал этот код в качестве примера. Надеюсь, что идея работает!
<?php
$friends = array('Robert', 'Louis', 'Ferdinand');
function greetings($friends){
echo "Greetings, $friends <br>";
}
foreach ($friends as $friend) {
greetings($friend);
}
?>
Ответ 12
Конфигурация не требуется, просто передайте массив напрямую, а PHP сделает все остальное:
function sendemail($id, $userid){
}
sendemail(arr[], 10);
Ответ 13
<?php
function takes_array($input)
{
echo "$input[0] + $input[1] = ", $input[0]+$input[1];
}
?>