【问题标题】:$_POST array sometimes skips numbers and IF statement ends$_POST 数组有时会跳过数字并且 IF 语句结束
【发布时间】:2019-12-27 06:02:27
【问题描述】:

如果一个或多个数字不存在,我不知道如何打印所有 $_POST 数组项(以连续数字结尾)。不知道怎么解释……例如……

$i = 1; 
while( isset($options['item_code'.$i]) )
{
echo $options['item_code'.$i];
$i++;
} 

只要数字继续按顺序存在,此代码就可以正常工作...

item_code, item_code1, item_code2, item_code3, etc...

但是一旦删除了一个数字,if 语句就会停止,并且不会打印其余的值。比如……

item_code, item_code1, item_code3, etc...

将停在“item_code1”,因为 item_code2 不存在。

我已经尝试过在 stackoverflow 上为类似问题提供的解决方案,但它们要么不起作用,要么做同样的事情,要么创建一个连续循环。

如果有人可以在这里给我任何帮助,我将不胜感激。

【问题讨论】:

  • 使用foreach 循环
  • 由于这个被连接到一个重复的块,数量和确切的名称(和项目的数量)永远是未知的,因此 foreach 循环将不起作用。 [除非我遗漏了什么……我不想声称肯定知道这一点,但不确定这将如何运作]
  • 如果是这样的话,你怎么知道编码item_codeXetc?
  • 你可能是对的。试图在我的脑海中弄清楚这一点,看看在这种特殊情况下它是如何工作的。
  • repeating block 是如何生成的?这是包含数据库驱动内容的表单吗?

标签: php arrays loops foreach


【解决方案1】:

你做错了。请像这样更新您的代码。将 $i

$key =  end(array_keys($options));
$dataa = explode('item_code',$key);
$count = $dataa[1];


$i = 1;
while( $i <= $count )
{
   if(isset($options['item_code'.$i])){
      echo $options['item_code'.$i];
   }
   $i++;
} 

【讨论】:

  • 当您在 while 循环中检查条件时,它将在第一个 true 条件下工作,之后它将不会执行
  • 您似乎明白我在这里的目的,但您的解决方案(尽管最接近)似乎会导致两个问题。 1)变量中跳过的数字可能会发生多次,有时可能高达几百个。 2)我不能让 $i 超过项目数,因为如果添加额外的块(在表单上的转发器块中),最后一个 $i 将成为下一个数字。
  • 您可以计算数组中的数字并传递该计数而不是 4
  • 如果数组的数量小于项目的最后一个数字,不知道该怎么做。 ....好吧,我刚刚明白了如何做到这一点,但不幸的是,我需要在这件事上动用我的大脑。也许我可以计算数组,然后从最后一个数字中连续减去?好吧,我的大脑受伤了……必须弄清楚如何处理结果。
  • 是的,我会在几分钟内告诉你。能否请您将此标记为答案并点赞
【解决方案2】:

我想这可以通过 array_filterstrpos 函数来完成:

<?php 

$codes = array_filter($options, function ($key) {
    return strpos($key, 'item_code') === 0;
}, ARRAY_FILTER_USE_KEY);

foreach ($codes as $code) {
    echo $code . PHP_EOL;
}

【讨论】:

    【解决方案3】:

    而不是像使用foreach一样

    foreach($options as $option){
        echo $value;
    }
    

    【讨论】:

    • $i 必须存在于解决方案中,因为它需要在表单值中附加新数字......并且当需要在转发器块中添加新块时使用它。
    猜你喜欢
    • 1970-01-01
    • 2020-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多