Как принять различные шаблоны параметров в функции PHP?

У меня есть функция, которая должна принимать либо массив, или строку и другую строку. Другие типы операндов должны быть отклонены.

Как я могу это сделать?

0

Решение

Вы можете определить свою функцию так, чтобы она принимала только массивы или строки, и если она найдет другой операнд, она автоматически выйдет из функции php.

Ниже приведен только PHP-скрипт, который вы можете идентифицировать вручную в вашей функции PHP.

Пример функции PHP:

 function testStringAndArray($arg) {
if(is_array($arg)|| is_string($arg)) {
//Do Processing
} else {
return false;
}
}
1

Другие решения

Вы можете использовать функцию is_array () в php, чтобы проверить, указана ли данная опция в массиве или строке.

Проверьте это здесь is_array ()

0

Если у вас уже есть какой-либо код, вы можете задать вопрос.

Как я понял из требования, ваша функция должна выглядеть примерно так:

function($arrayOrString, $string){
if((is_array($arrayOrString) || is_string($arrayOrString)) && is_string($string)){
// do something here
}else{
return false;
}
}

Ref: is_string
& is_array

0

Прикрепленный, функциональный образец с «No param», строковым параметром и параметром массива.

<?php

class Speaker {
public function sayHello($person = null)
{
// I will display hello something base on parameter type.
$this->render(
$this->prepareParams($person);
);
}

private function prepareParams($param = null) {
//Default value
if(is_null($param)) {
$param = 'World';
}
else if(is_array($param)) {
//Merge all item to one string with coma separator
$param = implode(', ', $param);
}

return $param;
}

private function render(string $target) {
echo "Hello ".$target;
}
}

$tester = new Speaker();

$this->sayHello();
$this->sayHello('Yanis');

$this->sayHello(['Yanis', 'thomas','roman']);

Вы можете использовать параметр по умолчанию для управления вторым необязательным параметром, таким как:

if(!is_null($mySecondParameter)) // I can use it Because he is defined.
0

Ладно, я просто подумал, что слишком сложно.
Я хотел что-то вроде

public myFunction(array $arg1) {
...
}
public myFunction(string $arg1, string $arg2) extends myFunction {
...
}

Но это намного проще с чем-то вроде

public myFunction($arg1, $arg2 = null) {
if(is_array($arg1)) {
...
}
if(is_string($arg1) && is_string($arg2)) {
...
}
0
По вопросам рекламы [email protected]