Для начала, ваш код бросает исключение «Invalid argument supplied for foreach()» когда вы пытаетесь пройтись по переменной $emails, которая строка.
Далее, что будет, если в пароле встречается символ
|
?
Далее, при добавлении в конец $textareaValue
/n
, код тоже валится — плохо.
Вообще, вам следует больше уделить внимания вашему code-style, а также посмотреть в сторону xDebug.
Рабочий код:
$textareaValue = 'aaa@aaa|a|aa/nbbb@bbb|bbb/nggg@ggg|ggg/n';
$explodedTextarea = explode('/n', $textareaValue);
$result = array();
foreach ($explodedTextarea as $line) {
list($email, $password) = array_pad(explode('|', $line, 2), 2, null);
if ($email) {
$result[$email] = $password;
}
}
print_r($result);