PHP, foreach не возвращает массив, но array_map с тем же кодом возвращает массив

Я хочу 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 )

1

Решение

Так как 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() является функцией, которая зацикливает / повторяет каждый элемент в массиве, выполняя «Перезвоните» функция против каждого элемента. Вы возвращаете функцию «обратного вызова», которая действует одновременно на один элемент массива и вызывается несколько раз: array_map()по одному разу для каждого элемента массива по очереди.

return в вашем «обратном вызове» просто возвращает измененное значение для этого один отдельный элемент (текущий элемент в array_map() цикл) к array_map() функция …. это говорит array_map() каким должно быть значение нового элемента.

array_map() Сама функция не может быть прервана: она будет продолжать итерацию по следующему элементу, посылая это по очереди в функцию «обратного вызова», пока это не будет сделано для каждого элемента в массиве.

3

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector