我希望foreach
返回数组,但它只返回一个数组。但array_map with
代码相同。
foreach
获取数组的正确方法是什么。foreach
的行为与array_map
不同。在文件 (userdata.php)
内Reme:Reme1991@jourrapide.com
george bush:GeorgeBush@gmail.com
obama:obama@gmail.com
使用 array_map
function registered_users(){
$file_user = file('userdata.php');
return array_map(function($user){
return explode(':',$user);
},$file_user);
} //returns the exploded array correctly.
使用 foreach
function registered_users(){
$file_user = file('userdata.php');
foreach ($file_user as $user) {
return explode(':',$user);
}
}// returns Array ( [0] => Reme [1] => Reme1991@jourrapide.com )
答案 0 :(得分:3)
因为array_map()
遍历数组中的所有元素.... foreach()
会做同样的事情,除了你的return
在第一次迭代时跳出它。
function registered_users(){
$users = [];
$file_user = file('userdata.php');
foreach ($file_user as $user) {
$users[] = explode(':',$user);
}
return $users;
}
修改强>
回答你的问题"为什么不从array_map
返回终止迭代?"
因为array_map()
是循环/迭代数组中每个元素的函数,所以对每个元素执行"回调" 函数。你的回归是在"回调" function,一次作用于一个单独的数组元素,由array_map()
多次调用,依次为数组的每个元素调用一次。
你的"回调中的return
"只是将一个个别元素(array_map()
循环中的当前元素)的修改后的值返回给array_map()
函数....它告诉{ {1}}新元素值应该是什么。
array_map()
函数本身不会被中断:它将继续迭代下一个元素,然后将其发送到"回调"函数,直到对数组中的每个元素都这样做。