My думаю, , что у вас были проблемы с последним / единственным элементом, потому что вы читаете строку из файла, например, через fgets (), и вы не удалили разрыв строки в конце строки,В этом случае вам действительно следует взглянуть на fgetcsv () .
. В любом случае, чтобы исправить вашу функцию, примените trim () к входной строке (или ко всем элементам массива послеразнесите, если хотите) для удаления пробелов, включая разрывы строк.
<?php
echo '--', foo('thisone', 'a,bcd,thisone,e'), "--\n";
echo '--', foo('thisone', 'thisone,e'), "--\n";
echo '--', foo('thisone', "e, thisone\n"), "--\n";
echo '--', foo('thisone', 'thisone'), "--\n";
echo '--', foo('thisone', ''), "--\n";
echo '--', foo('thisone', 'a,thisone,b,thisone,c,thisone'), "--\n";
function foo($deleteuser, $userList) {
$pieces = array_map('trim', explode(',', $userList));
foreach( array_keys($pieces, $deleteuser) as $key ) {
unset($pieces[$key]);
}
return implode(',', $pieces);
}
печатает
--a,bcd,e--
--e--
--e--
----
----
--a,b,c--
Я использовал array_keys вместо array_search () только вЕсли имя пользователя может появиться в списке более одного раза.