【问题标题】:Multiple functions in a single IF statement in PHP?PHP中单个IF语句中的多个函数?
【发布时间】:2015-03-11 08:17:35
【问题描述】:

所以我想做的是当用户按下提交按钮时,运行一个 php 查询。在那个 php 查询中,如果满足“If 语句”条件,我想执行一个操作(在我的例子中是页面重定向)并返回 false。

[编辑] 整个查询代码是这样的:

add_filter( ‘mycred_add’, ‘mycred_pro_restrict_negative_balances’, 1, 3 );
function mycred_pro_restrict_negative_balances( $reply, $request, $mycred ) {

  if ( $reply === false || $request[‘amount’] > 0 ) return $reply;

  extract( $request );

  // Users current balance
  $current_balance = $mycred->get_users_balance( $user_id, $type );

  // If balance is zero – decline OR If we are deducting points, make sure the amount will not take us below zero
  if (( $current_balance <= 0 )||(($current_balance – abs( $amount )) < 0 )) {
    $redirect_to_page = 22;
    return false;
  }

  return $reply;

}

我想知道查询是否有效?如果它有什么问题,请务必提及更正。提前感谢您帮助/尝试帮助我。

【问题讨论】:

  • 如果页面只是被重定向,返回值在哪里?
  • 为什么不自己测试一下呢?这是简单的代码,不会花你很长时间来调试/找出。
  • 使用返回值,返回余额扣除请求。是的,我错误地将其放置在重定向之后。
  • @Epodax 我是站点管理员而不是管理员,管理员要求我在大约一天后完成此问题并为他提供解决方案。

标签: php if-statement multipleoutputs


【解决方案1】:

在您的调用函数中,测试 FALSE 返回值。如果为 false,则在处理此函数返回 FALSE 时需要执行的任何其他操作后调用重定向。

【讨论】:

  • 是的,这正是我需要学习的内容,我究竟该如何测试 FALSE。
  • 可以是 /* if (return false == true) { $redirect_to_page = 10;}
  • @JoeWilkinson 如果调用此代码所在的函数,例如 testForX(),您可以:if(testForX() == FALSE) { $redirect_to_page = 10; } 或简单地使用 !(不是运算符),如 if(!testForX()) { $redirect_to_page = 10; }
  • 谢谢,我会试试这个,让你尽快知道。顺便说一句,我已经更新了上面的整个查询。请您查看一次并确认您提供的答案。谢谢你的帮助。
  • 不敢相信我之前错过了它,但还有另一个问题是您设置的变量 ($redirect_to_page) 实际上并没有在任何地方使用。当您返回 false 时,这是唯一返回的内容。除非是全局变量,否则永远不会使用该变量的值。
【解决方案2】:

你可能需要这样的东西:

if ( $current_balance <= 0 ) {
 /* Redirection */
 header("Location: http://www.example.com/page10.php"); 
 exit();
}

发送标头“位置”将告诉浏览器转到指定的 URL。这是最简单的重定向方式。您不必返回 false。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 1970-01-01
    • 2020-04-10
    相关资源
    最近更新 更多