Как правильно объявить функцию с одним параметром, принимающую массив одинакового типа элементов?
Использование единственного аргумента типа array.
/**
* @param string[] $dependencies
*/
public function setDependencies (array $dependencies) : void
{
$this->dependencies = $dependencies;
}
Использование аргументов функции переменной длинны.
/**
* @param string ...$dependencies
*/
public function setDependencies (string ...$dependencies) : void
{
$this->dependencies = $dependencies;
}
setDependencies(array $dependencies)
- в данном случае вы, передаете 1 аргумент с типом array
, где использоваться будет так:
setDependencies([1,2,3]);
А вот в случае с setDependencies (string ...$dependencies)
, вы задействуете оператор and so on
(и так далее...) и сможете передавать неограниченное количество аргументов типа string
и только:
setDependencies('str1', 'str2', 'str3');
Что собственно тоже является массивом.
Если внутри функции, сделать так:
var_dump($dependencies);
То вывод будет такой:
array(3) {
[0]=>
string(4) "str1"
[1]=>
string(4) "str2"
[2]=>
string(4) "str3"
}
Также можно передавать неограниченное количество массивов, если тип будет array
, то есть так: setDependencies(array ...$dependencies)
, в данном случае мы, сможем передавать только массивы и ничего более (ну, а в массив, можно поместить, что угодно):
setDependencies(['str1', 1], ['str2', 2], ['str3', 3]);
И вывод уже будет такой:
array(3) {
[0]=>
array(2) {
[0]=>
string(4) "str1"
[1]=>
int(1)
}
[1]=>
array(2) {
[0]=>
string(4) "str2"
[1]=>
int(2)
}
[2]=>
array(2) {
[0]=>
string(4) "str3"
[1]=>
int(3)
}
}
Но можно и вовсе не указывать тип и передавать любые аргументы, с любым типом.
И кстати, тип void
указывать не обязательно, так-как, функция которая ничего не возвращает и так имеет тип void
- по этому, в данный момент - это избыточный код.
Виртуальный выделенный сервер (VDS) становится отличным выбором
есть проблема, ввожу русские буквы, например "у", по идее оно должно отображать в формате char "у" , а в формате int номер по таблице ASCII "227", но оно...
У меня имеется 3 мерный динамический массив ImgAR типа byte***, в нем хранятся данные картинки разбитые по координатам пикселя и цветовым каналамИ...
Задача:Написать программу для моделирования Т-образного сортировочного узла на железной дороге с использованием контейнерного класса stackПрограмма...