无法在一个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
环路空?
答
这是因为您正在使用return
内部循环。它会在第一次迭代后终止循环。你需要做这样的事情。
$return = null;
foreach($data as $item)
{
$return .= "Area ID ".$item["id"]." and person located ".$item["position"]."<br />";
}
return $return;
尝试'var_dump($ item);'循环内部。也许它会揭示一些东西。 –
你实际上并没有告诉你的foreach()输出任何东西,仅仅是'return' - 它会将该字符串赋值给'$ messages = $ Profile-> setOrder($ _ POST ['data']);'并终止循环。 – CD001
你不循环,因为'return'打破循环 –