我如何取消此警告警告:为foreach()提供的参数无效

时间:2017-10-31 12:29:42

标签: php split count character

在我的代码中,我想根据$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()提供的参数无效

如何解决?

2 个答案:

答案 0 :(得分:2)

$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

答案 1 :(得分:-1)

检查一下,如果你正在使用for循环,那么也不需要添加foreach,str_split将一个字符串拆分成数组的部分然后我们必须通过循环来检查哪个对象数组的长度为string是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];
  }
}

谢谢,我希望它有所帮助。