没有维度数组迭代PHP

时间:2017-10-03 10:27:14

标签: php

只是一个小小的快速问题,如何将循环迭代到此

(
    8885555512,
    8885551212,
    5555648583,
    4155553695,
    5555228243,
    5554787672,
    4085555270,
    4085553514,
    5556106679,
    5557664823,
    7075551854
)

我试过这个for循环但是没有用

$validator = Validator::make($request->all(), [
        'phone_numbers' => 'required'
    ]);

    if ($validator->fails()) 
    {
        return response(array(
        'code' => 0,
        'message' =>$validator->errors()->all(),
        'status' => "error",
        ),200);
    }
    else
    {

        $phone_numbers_data = array();
        $phone_numbers = Input::get('phone_numbers');
        print_r($phone_numbers);
        foreach($phone_numbers as $p)
        {
            echo $p;
        }
    }

但仍然会出现错误

Invalid argument supplied for foreach

任何解决方案?

4 个答案:

答案 0 :(得分:2)

正如你已经修正了拼写错误,唯一的问题似乎就是你声明数组的方式。下面的代码声明了一个数组并循环遍历它。

<?php

$phone_numbers = array(
    8885555512,
    8885551212,
    5555648583,
    4155553695,
    5555228243,
    5554787672,
    4085555270,
    4085553514,
    5556106679,
    5557664823,
    7075551854
);

print_r($phone_numbers);
foreach($phone_numbers as $p)
{
  echo $p;
}

答案 1 :(得分:2)

假设您有像您一样的实际文本输入,请首先取出电话号码的内部部分,然后拆分。

$phone_numbers = <<<DATA
(
    8885555512,
    8885551212,
    5555648583,
    4155553695,
    5555228243,
    5554787672,
    4085555270,
    4085553514,
    5556106679,
    5557664823,
    7075551854
)
DATA;


preg_match('#\((.*)\)#sm', $phone_numbers, $matches);
$phone_numbers_as_array = preg_split('#\s*,\s*#sm', trim($matches[1]));

现在,您的电话号码实际上是一个数组,而不是文本。现在,您可以使用foreach循环播放它。

答案 2 :(得分:2)

(
8885555512,
8885551212,
5555648583,
4155553695,
5555228243,
5554787672,
4085555270,
4085553514,
5556106679,
5557664823,
7075551854
)

如果你要求他们通过

,这可以纠正
[
8885555512,
8885551212,
5555648583,
4155553695,
5555228243,
5554787672,
4085555270,
4085553514,
5556106679,
5557664823,
7075551854
]

答案 3 :(得分:1)

循环看起来很好。

在这种意义上,您可以将变量强制转换为数组。

$var = (array)$arr;

尝试在循环之前转换Rest返回