无法在一个PHP foreach循环迭代阵列

问题描述:

我请求PHP文件阐述一些的AjaxPOSTdata无法在一个PHP foreach循环迭代阵列

POST数据

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环路空?

+0

尝试'var_dump($ item);'循环内部。也许它会揭示一些东西。 –

+2

你实际上并没有告诉你的foreach()输出任何东西,仅仅是'return' - 它会将该字符串赋值给'$ messages = $ Profile-> setOrder($ _ POST ['data']);'并终止循环。 – CD001

+2

你不循环,因为'return'打破循环 –

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

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