【问题标题】:Is this code correct for printing an array in PHP? Because it isn´t working此代码对于在 PHP 中打印数组是否正确?因为它不起作用
【发布时间】:2012-08-16 17:02:12
【问题描述】:

我想在 Drupal 7 中打印 $tabs 数组。 所以,我尝试在我的 node.tpl.php 中添加这段代码:

  <?php
  echo '<div class="btn-group">';
  foreach($tabs as $tab=>$link) {
    echo '<button class="btn"><a href="$link">$tab</a></button>';
  };
  echo '</div>';
  ?>

但是,它没有打印任何东西......所以我确定这有点错误。 也许是因为这应该在page.tpl.php 内?有没有我没发现的语法问题?

感谢您的帮助!!

蔷薇

【问题讨论】:

  • var_dump($tabs) 产生什么?
  • 变量不会被它们的值替换,因为你使用了单引号而不是双引号。但是,应该还是有一些输出...

标签: php arrays foreach drupal-7


【解决方案1】:

我看到的一个问题是您试图打印包含在单引号内的变量。 PHP 不会在单引号内插入变量,但会在双引号内。尝试将您的回声更改为:

echo '<button class="btn"><a href="' . $link .'">' . 
    $tab . '</a></button>';

来自手册:

注意:与双引号和heredoc语法不同,变量和转义 特殊字符的序列在出现时不会被扩展 单引号字符串。

有关更多信息,请参阅Strings 的手册条目

【讨论】:

  • +1,但为了代码的可读性,建议不要这样做。我使用逗号分隔的事物列表来代替 echo。此外,请使用htmlspecialchars() 确保 HTML 有效。
  • 但是即使用单引号,应该还是有一些输出的,但是她说是没有打印任何东西。
  • 对属性使用单引号而不是转义会更简洁。
  • 所有优秀的 cmets,我和我相信 OP 很欣赏这些反馈。关于可读性,我已经更新了答案,但最初使用他当前的风格是为了方便。
  • var_dump($tabs) 返回 NULL。但我不明白,因为有一个 $tabs 数组...
【解决方案2】:

引用这样的变量只适用于双引号,而不是单引号,所以它必须是

 echo '<button class="btn"><a href="'.$link.'">'.$tab.'</a></button>';

echo "<button class=\"btn\"><a href=\"$link\">$tab</a></button>";

这可能不会修复您的代码。

【讨论】:

  • 但是错误一定在其他地方,因为用单引号至少会打印出变量名,但她说它什么也没打印。
猜你喜欢
  • 1970-01-01
  • 2013-01-31
  • 1970-01-01
  • 1970-01-01
  • 2018-02-08
  • 1970-01-01
  • 1970-01-01
  • 2014-08-26
相关资源
最近更新 更多