0

我在 google 和 SO 上找不到我的问题。希望,我可以解释给你。

当您查看以下功能时,您会明白:

function get_page($identity)
{
    if($identity is id)
       $page = $this->get_page_from_model_by_id($identity);
    elseif($identity is alias)
       $page = $this->get_page_from_model_by_alias($identity);
}

我使用的功能:

get_page(5); // with id
or
get_page('about-us'); // with alias
or
get_page(5, 'about-us'); // with both

我想将参数发送到函数idalias. 它应该只有一个标识符。

我不想喜欢function get_page($id, $alias)

我怎样才能得到和知道只有一个参数类型variable。有什么功能或可能吗?

4

5 回答 5

1

使用is_string()来查找输入是整数还是字符。

于 2013-09-19T14:00:01.190 回答
1
if(is_numeric($identity)) {
    $page = $this->get_page_from_model_by_id($identity);
}
elseif(is_string($identity)) {
    $page = $this->get_page_from_model_by_alias($identity);
}
elseif(func_num_args() === 2) {
    $id = func_get_arg(0);
    $alias = func_get_arg(1);
    //do stuff
}
于 2013-09-19T14:00:29.370 回答
0

你应该利用func_get_args()

<?php
function foo()
{
    $numargs = func_num_args();
    echo "Number of arguments: $numargs<br />\n";
    if ($numargs >= 2) {
        echo "Second argument is: " . func_get_arg(1) . "<br />\n";
    }
    $arg_list = func_get_args();
    for ($i = 0; $i < $numargs; $i++) {
        echo "Argument $i is: " . $arg_list[$i] . "<br />\n";
    }
}

foo(1, 2, 3);
?>

来源

于 2013-09-19T13:58:07.400 回答
0

这是一个完整的解决方案:

function get_page()
{
    $alias = false;
    $id = false;
    foreach(func_get_args() as $arg)
        if(is_string($arg))
             $alias = $arg;
        else if(is_int($arg))
             $id = $arg;

}
于 2013-09-19T13:58:38.957 回答
0

假设 id 始终是一个数字,您可以使用 php 的 is_numeric() 对其进行测试

function get_page($identity)
{
    if(is_numeric($identity) {
       $page = $this->get_page_from_model_by_id($identity);

    } else { 
       $page = $this->get_page_from_model_by_alias($identity);
    }
}
于 2013-09-19T14:01:01.217 回答