У меня есть список имен, разделенных запятыми (они могут содержать другие символы), или быть пустым, но обычно выглядит так:
NameA,NameB,NameC
Мне нужно создать функцию для удаления имени, если оно присутствует в списке и которое восстанавливает структуру, разделенную запятыми.
например: если имяA должно быть удалено, я должен закончить:
NameB,NameC
НЕ
,NameB,NameC
Аналогично для остальных.
Это то, что я придумал, есть ли лучшее решение?
$pieces = explode(",", $list); $key=array_search($deleteuser, $pieces); if(FALSE !== $key) { unset($pieces[$key]); } $list = implode(",", $pieces);
не$pieces = explode(",", $list); $key=array_search($deleteuser, $pieces); if(FALSE !== $key) { unset($pieces[$key]); } $list = implode(",", $pieces);
Вы можете использовать функцию array_splice для удаления из массива. С offset = array_search ($ deleteuser, $ pieces) и length = 1.
Это должно работать очень хорошо. Вы также можете быть заинтересованы в функции fgetcsv PHP.
Док: http://php.net/manual/en/function.fgetcsv.php
Вы также можете попробовать регулярное выражение (возможно, оно может быть оптимизировано):
$search = 'NameB'; $list = 'NameA,NameB,NameC'; $list = preg_match('/(^' . $search . ',)|(,' . $search. ')/', '', $list);