【问题标题】:How do i go off this warning Warning: Invalid argument supplied for foreach()如何关闭此警告警告:为 foreach() 提供的参数无效
【发布时间】:2017-10-31 12:29:41
【问题描述】:

在我下面的代码中,我想根据$b数量示例更改每个结果

for($i = 0; $i<3; $i++)
  1 $pins[$b] 1234 
  2 $pins[$b] 5678
  3 $pins[$b] uncompleted

这是我的代码:

$pin = "12345678910";
# split string in pieces with 4 characters
$disp = str_split($pin, 4);
for($i = 0; $i<3; $i++){
    # loop on all pin
    foreach($disp[$i] as $pins)     {
        # length is not 4
        if(strlen($pins) != 4)     { 
            echo "uncompleted";
        } else {
            echo "$pin[$i] ";
        }
    }
}

我收到警告:

为 foreach() 提供的参数无效

如何解决?

【问题讨论】:

    标签: php split count character


    【解决方案1】:

    $disp 不是多维的,因此您不需要for($i

    $pin = "12345678910";
    # split string in pieces with 4 characters
    $disp = str_split($pin, 4);
    foreach($disp as $pin)     {
        # length is not 4
        if(strlen($pin) != 4)     { 
            echo "uncompleted";
        } else {
            echo $pin;
        }
    }
    

    foreach($disp[$i] 正在/正在尝试迭代 arrayobject,但 $disp[$i] 是一个字符串。

    演示:https://3v4l.org/O2osD

    【讨论】:

      【解决方案2】:

      检查这个,如果你使用for循环那么也不需要添加foreach,str_split将一个字符串分成数组的一部分,然后我们必须通过循环来检查哪个对象数组的字符串长度是4.

      $pin = "12345678910";
      $disp = str_split($pin, 4);
      $count = count($disp);
      
      for($i = 0; $i < $count; $i++){
        if(strlen($disp[$i]) != 4)     { 
          echo "uncompleted";
        } else {
          echo $disp[$i];
        }
      }
      

      谢谢,希望对大家有所帮助。

      【讨论】:

      • 感谢您提供此代码 sn-p,它可能会提供一些即时帮助。正确解释would greatly improve 其教育价值,通过说明为什么这是解决问题的好方法,并使其对未来有类似但不相同问题的读者更有用。请编辑您的答案以添加解释,并说明适用的限制和假设。
      • @Eniedi Monday 如果它解决了您的问题或有帮助,请点赞。
      猜你喜欢
      • 2017-06-01
      • 1970-01-01
      • 2018-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多