【问题标题】:passing integers as parameter in drupal menu在 drupal 菜单中传递整数作为参数
【发布时间】:2012-08-06 18:26:58
【问题描述】:

我正在使用 drupal 6

假设我有

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

它会将路径中位于第 1 位的部分(在这种情况下它将传递 'yo')传递给 callback_function 函数...

但是如果我实际上是在尝试将整数 1 传递给函数呢?如果不先将其转换为字符串然后再转换为整数,我该怎么做...

【问题讨论】:

    标签: drupal drupal-6 drupal-routes


    【解决方案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:

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

    只会打印“Numbah one!”如果它是数字类型和数字 1。如果您愿意,可以使用

    进行类型转换
    (int)$args[0];
    (string)$args[0];
    (boolean)$args[0];
    

    分别。

    您还可以查看这篇文章: http://drupal.org/node/1473458

    【讨论】:

      【解决方案2】:
        $items['path/yo'] = array(
          'page callback' => 'callback_function',
          'page arguments' => array("1"),
          'type' => MENU_CALLBACK,
        );
      

      也请参阅 Wolfe 的回答。如果输入 (int) 1,它将是 arg(1)。按原样输入要传递给页面回调的字符串。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-06-01
        • 2010-11-10
        • 2016-02-23
        • 2013-09-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-09-10
        相关资源
        最近更新 更多