PHP,foreach 不是 return 数组,而是 array_map 具有相同代码 return 的数组
PHP, foreach doesnt return an array but array_map with same code returns an array
我想要 foreach
到 return 数组,但它只是 return 一个数组。但是 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 )
因为 array_map()
遍历数组中的所有元素.... foreach()
会做同样的事情,除了你的 return
在第一次迭代时跳出它。
function registered_users(){
$users = [];
$file_user = file('userdata.php');
foreach ($file_user as $user) {
$users[] = explode(':',$user);
}
return $users;
}
编辑
回答你的问题"Why doesn't a return from array_map
terminate the iteration?"
因为array_map()
是一个loops/iterates数组中每个元素的函数,对每个元素执行"callback"函数。你的 return 在 "callback" 函数中,它一次作用于一个单独的数组元素,并被 array_map()
调用多次,依次对数组的每个元素调用一次。
您的 "callback" 中的 return
只是 return 为 一个 单个元素(当前元素在array_map()
循环)到 array_map()
函数....它告诉 array_map()
新元素值应该是什么。
array_map()
函数本身不能被中断:然后它将继续遍历下一个元素,依次将其发送到 "callback" 函数,直到它对中的每个元素都这样做数组。
我想要 foreach
到 return 数组,但它只是 return 一个数组。但是 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 )
因为 array_map()
遍历数组中的所有元素.... foreach()
会做同样的事情,除了你的 return
在第一次迭代时跳出它。
function registered_users(){
$users = [];
$file_user = file('userdata.php');
foreach ($file_user as $user) {
$users[] = explode(':',$user);
}
return $users;
}
编辑
回答你的问题"Why doesn't a return from array_map
terminate the iteration?"
因为array_map()
是一个loops/iterates数组中每个元素的函数,对每个元素执行"callback"函数。你的 return 在 "callback" 函数中,它一次作用于一个单独的数组元素,并被 array_map()
调用多次,依次对数组的每个元素调用一次。
您的 "callback" 中的 return
只是 return 为 一个 单个元素(当前元素在array_map()
循环)到 array_map()
函数....它告诉 array_map()
新元素值应该是什么。
array_map()
函数本身不能被中断:然后它将继续遍历下一个元素,依次将其发送到 "callback" 函数,直到它对中的每个元素都这样做数组。