【问题标题】:For loop extra conditionFor 循环额外条件
【发布时间】:2014-04-15 15:09:55
【问题描述】:

我有一个 for 循环,它遍历几个数组并在完成一些基本数学运算后分配一些值。我的问题是:有没有办法确保这个 for 循环只在附加条件为真时迭代?

for ($i = 0; $i < count($ci); $i++) {
    $PIDvalue = $ci[$i]["PID"];
    $datevalue = $pi[$i]["datetime"];
    $pp_tcvalue = $ci[$i]["pp_tc"] - $pi[$i]["pp_tc"];
    $pp_trvalue = $ci[$i]["pp_tr"] - $pi[$i]["pp_tr"];
    $bp_tcvalue = $ci[$i]["bp_tc"] - $pi[$i]["bp_tc"];
    $emailvalue = $ci[$i]["email"];

所以我想要这样的东西......

    for ($i = 0; $i < count($ci); $i++) {
    if($ci[$i]["email"] === $pi[$i]["email"]) {
    $PIDvalue = $ci[$i]["PID"];
    $datevalue = $pi[$i]["datetime"];
    $pp_tcvalue = $ci[$i]["pp_tc"] - $pi[$i]["pp_tc"];
    $pp_trvalue = $ci[$i]["pp_tr"] - $pi[$i]["pp_tr"];
    $bp_tcvalue = $ci[$i]["bp_tc"] - $pi[$i]["bp_tc"];
    $emailvalue = $ci[$i]["email"];

如果它们不匹配,我将分配一个值“0”或其他值。

【问题讨论】:

  • 您当前的代码有什么问题,应该可以按预期工作
  • @user574632 如果后面的 } 未关闭,则不会(不过可能只是一个问题错字......)
  • @user574632 我遇到了一个问题 - 我的问题是用户注册并支付服务费用,然后他们取消了订阅(这很好),但他们仍然被计算在内并且一团糟向上 for 循环。我的问题可能是我的查询,但我不想重写它们,因为它们太详细了。我正在寻找一个可能的更好的解决方案。
  • @MackieeE 还有更多代码,我只是把不重要的东西留给了问题。
  • @ChaseC 当然,我的意思是你上面的代码有什么问题 - if 语句应该完全符合你的要求。如果不是我误解了你的问题

标签: php if-statement for-loop


【解决方案1】:

您可以在 for 循环中添加一个附加条件,使其几乎不可读:

for ($i = 0; $i < count($ci), $ci[$i]["email"] === $pi[$i]["email"]; $i++)

但我宁愿break循环:

for ($i = 0; $i < count($ci); $i++) {
    if ($ci[$i]["email"] !== $pi[$i]["email"]) break;
    $PIDvalue = ...

【讨论】:

    【解决方案2】:

    你可以在你的 for 条件中添加它,就像这样:

    for ($i = 0; $i < count($ci) && $ci[$i]["email"] === $pi[$i]["email"]; $i++) {
    

    当第二个条件计算为假时,循环将停止运行。

    【讨论】:

      猜你喜欢
      • 2020-11-03
      • 2016-06-21
      • 2019-08-26
      • 1970-01-01
      • 2013-07-23
      • 1970-01-01
      • 2014-03-30
      • 2016-04-10
      • 1970-01-01
      相关资源
      最近更新 更多