无法在PHP foreach循环中迭代数组

时间:2017-10-18 14:24:01

标签: php arrays foreach

我的请求 PHP 文件详细说明了一些 Ajax POST data

发布数据

data[0][id]:359
data[0][position]:1
data[1][id]:321
data[1][position]:2
data[2][id]:354
data[2][position]:3

Request.php

if(isset($_POST['data'])) {
    if(isset($_SESSION['username']) && isset($_SESSION['password'])) {

        $verify = $loggedIn->verify();

        if($verify['username']) {
            $Profile = new Profile();
            $Profile->db = $db;
            //Call my function
            $messages = $Profile->setOrder($_POST['data']);     

        }
    }
}

Profile.php

function setOrder($post) {
    var_dump($post);

    foreach($post as $item)
    {
        return "Area ID ".$item["id"]." and person located ".$item["position"]."<br />";
    }
}

我的函数没有返回任何内容,而$post的转储如下所示

array(3) {
  [0]=>
  array(2) {
    ["id"]=>
    string(3) "359"
    ["position"]=>
    string(1) "1"
  }
  [1]=>
  array(2) {
    ["id"]=>
    string(3) "321"
    ["position"]=>
    string(1) "2"
  }
  [2]=>
  array(2) {
    ["id"]=>
    string(3) "354"
    ["position"]=>
    string(1) "3"
  }
}

在我的功能中我可以dump正确地使用var_dump($post[0]["id"]);之类的内容,那么为什么我的foreach循环为空?

1 个答案:

答案 0 :(得分:2)

这是因为你在内部循环中使用return。它将在第一次迭代后终止循环。你需要做这样的事情。

$return = null;
foreach($data as $item)
{
    $return .= "Area ID ".$item["id"]." and person located ".$item["position"]."<br />";
}
return $return;