2012-08-06 63 views
1

我使用的Drupal 6傳遞整數作爲參數在Drupal菜單

假設我有

$items['path/yo'] = array(
    'page callback' => 'callback_function', 
    'page arguments' => array(1), 
    'type' => MENU_CALLBACK, 
); 

它將代替通過在作爲在1個位置的路徑的一部分(在這種情況下,它會通過'喲')回調函數功能...

但是如果我真的試圖將整數1傳入函數呢?我會怎麼做,而不是先把它作爲字符串,然後再轉換爲整數...

+0

...''頁面參數'=> 1'? – Matt 2012-08-06 18:28:39

回答

1
$items['path/yo'] = array(
    'page callback' => 'callback_function', 
    'page arguments' => array("1"), 
    'type' => MENU_CALLBACK, 
); 

見沃爾夫的回答也是如此。如果輸入(int)1,它將是arg(1)。輸入要傳遞給頁面回調的字符串。

1

php類型轉換是非常完善的,你必須注意類型鑄造,但特別是與0和1,因爲他們可以是字符串,數字或布爾值。

您可以在條件中使用類型檢查(例如===!==)。在你現在的例子中,它不是一個字符串,它是一個數字。它會將1傳遞給callback_function。

function callback_function($args) { 
print_r($args); 
} 

會給你通過的參數。在這種情況下,$args[0]將是數字1.如果它是99%的情況下的數字或字符串,則不必擔心,因爲如果將它用作數字,php會將其轉換爲數字,並且如果將其用作一個字符串的PHP將它視爲一個字符串。只是要小心使用條件語句,並請務必閱讀本:http://php.net/manual/en/language.operators.comparison.php

例如,看它是否是數字1:「Numbah一個」

if(1 === $args[0]) echo "Numbah one!"; 

將只打印如果它是一個號碼類型和數量1.如果你有

(int)$args[0]; 
(string)$args[0]; 
(boolean)$args[0]; 

分別喜歡,你可以強制轉換它。

您還可以看看這篇文章: http://drupal.org/node/1473458