2014-01-11 103 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

相關問題