【问题标题】:PHP remove array inside foreach loopPHP在foreach循环中删除数组
【发布时间】:2018-08-20 12:04:47
【问题描述】:

所以我试图在 foreach 循环内的 if 语句中删除数组...

<?php
        foreach ($politics as $tag => $key):?>


        <?php    if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
                    $ip = $_SERVER['HTTP_CLIENT_IP'];
                    } elseif (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
                        $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
                    } else {
                        $ip = $_SERVER['REMOTE_ADDR'];
                      }
                      $vienodas = "SELECT * FROM pol WHERE (politikas = '$Veryga' AND ip = '$ip')";
                      $vienodasres = mysqli_query($conn, $vienodas);
                     if ( mysqli_num_rows($vienodasres) > 0){
                         //IT DOESN'T WORK 
                         unset($politics[$tag]);
                         //IT DOESN'T WORK 
                     }
                      ?>
 <div class="mySlides">
<?php $Veryga= $key['vardas'];
 $Veryga2 = str_replace(' ', '', $Veryga);
 ?>
  <div <?php echo 'id="'.$Veryga2.'"'; ?> class="politikai">

<..Not important code..>



  </div>
  <?php
  endforeach; ?>

它不想工作,我正在尝试这样做,if 语句只是检查是否有等于用户 IP 的行和它们所在的幻灯片

【问题讨论】:

  • 第一行为什么有冒号?
  • 因为里面有 html 代码,而且它可以工作,并且在我用 endforeach 关闭 foreach 循环时,这不是花括号:)
  • @Jessedegans 这是控制结构的另一种语法。我更喜欢使用花括号。
  • @AndrewSchultz 谢谢 :)

标签: php arrays loops foreach unset


【解决方案1】:

你的价值和关键元素应该像这样定义错误。

foreach ($politics as $key => $tag):
    unset($politics[$key]);

【讨论】:

  • 虽然这对代码执行无关紧要
  • @ikdekker 没关系,但它的名称不正确并且具有误导性。
  • 那么我应该把if语句放在哪里?
  • @JonasTamoševičius if 语句嵌套正确但是 mysqli_query 返回什么?
  • @AndrewSchultz 它返回名称和 IP,因此如果表中存在政治(名称)等于他们已经投票给该人的密钥和 IP 的行:)
【解决方案2】:

您稍后不会访问该 $politics 数组元素,因此它未设置,但控制流在元素内部继续。 如果您想阻止输出,请在此时使用 continue; 语句。

【讨论】:

  • 我也这么认为。但是我希望他只有在数据库没有结果时才想跳过。仍然可能是正确的答案
  • 该声明的确切位置? :)
  • 如果我正确理解了您的意图,您取消设置元素的位置 ;) 并且如果您打算在网络的某个地方提供此代码 - 请查看准备好的语句,因为您有一个广泛的开放sql注入向量坐在那里!
  • 检查返回的行数以及是否满足条件(并执行语句)。 -> 调试输出或附加的调试器和单步执行。
  • 来自 PHP 的帮助:The behaviour of mysqli_num_rows() depends on whether buffered or unbuffered result sets are being used. For unbuffered result sets, mysqli_num_rows() will not return the correct number of rows until all the rows in the result have been retrieved. 所以请再次检查该值是否真的是您所期望的。
猜你喜欢
  • 1970-01-01
  • 2012-02-15
  • 2021-11-13
  • 2015-09-21
  • 2010-12-29
  • 2011-06-09
  • 2020-05-17
  • 1970-01-01
相关资源
最近更新 更多