0

我有一个类似的功能。该功能 mysqls 并打印新闻。现在,根据 mysql 结果,此函数可能会打印或不打印某些内容。

function print_div_boxes($mysql)
{
echo 'Print (large sum of) data & divs....';

$printed_already = 1;
}

我希望实现的PHP

<?

print_div_boxes($mysql);

if(!$printed_already)
{
print_div_boxes($another_mysql);
}
?>

我只是想$print_already从那个函数传递给一个文档,把它当作global什么东西来抓取……有什么建议吗?可能的?

4

2 回答 2

1

编辑问题后,您根本不需要 return 并对代码进行一些明确的修改,如下所示:

<?php
$printed_already = false;
function print_div_boxes()
{
global $printed_already;
echo 'Print (large sum of) data & divs....';

$printed_already = true;
}
?>

<?php
if(!$printed_already)
{
echo '<div>'; print_div_boxes(); echo '</div>';
}
?>
于 2012-12-27T23:54:45.713 回答
1

这非常简单,您只需要:

确保某个变量(通常是布尔值)指示执行某个函数的结果。这是非常通用的方法。

因此,在程序代码中,它看起来像这样:

<?php

//initial state;
$already_printed = false;


/**
 * instead of using a global keyword, use reference
 * it makes code a bit "clean" 
 */
function print_div_boxes(&$already_printed) //<-- we are passing a reference, not a copy
{
  echo 'Print (large sum of) data & divs....';

  //A couple of thing to note:

  //1) Function Return value SHOULD NOT BE RESULT OF ASSIGNMENT!!!
  //2) No 'return' keyword actually required here, its VOID
  //3) You expect a logic, so use boolean instead of int. It's more appropriate

   $already_printed = true; 
}


//Then use it like:

if ( $already_printed === false ){

   print_div_boxes(&$already_printed);

}
于 2012-12-28T00:02:03.880 回答