2014-01-11 68 views
-1

我有以下功能...有没有办法强制参数顺序?

function myFunction($arg1 = '', arg2 = '') { 
    return 'My args: ' . $arg1 . ' & ' . $arg2; 
} 

...这是我从拿到检索的数据调用...

$arg1 = retrieve($_GET, 'arg1'); // custom function 
$arg2 = retrieve($_GET, 'arg2'); // retrieves array value or empty string 

$result = myFunction($arg1, $arg2); 

...但是...

echo ($result === 'My args: ' . $arg1 . ' & ' . $arg2); // Why is this false? 

鉴于arg1结果为空字符串,但arg2没有,为什么arg2的值被认为是arg1 o它已被传递给函数?我是PHP的新手,我最习惯于Java,可选参数的引入以及范式的混合等让我感到困惑。

TLDR;为什么当称为myFunction('', $arg2);

编辑为arg1不为空:发布代码是虚构的;实际代码可以在这里找到 - >http://pastie.org/8623944#7

EDIT2:再次测试代码,这是我的一个错字;我将$ arg1作为$ arg2的值重新赋值给函数。我的错。

+0

? –

+1

你的假设是完全错误的,无论你为'$ arg1'传递什么值,它**都会被传递**。 '$ arg2'不会“滑过”到'$ arg1'中。此外,不要发布“编造”的代码,然后链接到你的真实代码,只是**发布你的真实代码**。 – meagar

+0

'arg2'永远不会被认为是'arg1'。看到这里的一些例子:http://3v4l.org/AXvXb。你的代码中有一个完全不同的问题。 – jszobody

回答

4

你的函数不返回的字符串,但相呼应,所以你可以展示你的输出===永远不会为真

尝试

function myFunction($arg1 = '', arg2 = '') { 
    return 'My args: ' . $arg1 . ' & ' . $arg2; 
} 
+0

我编写的代码,因为我写了这篇文章,你可以考虑一个错字。我将用实际的代码更新OP。 – Alxe

+0

下次发布你的实际代码,现在它只是猜测你的问题也在这个代码.....你有没有真的测试过你的问题是在当前的代码? – Nanne

+0

是的,我有'echo'功能。刻画的问题是持久的。 – Alxe

相关问题