2012-08-06 33 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