unset последний элемент массива

в этом коде я пытаюсь отменить первый и последний элемент массива $ status
для отмены, но последний элемент, который я попробовал, разместил указатель в $ end
не отмените, что я могу сделать по этой причине?

$item[$fieldneedle] = " node_os_disk_danger "; $status = preg_split('/_/',$item[$fieldneedle]); unset($status[0]); $end = & end($status); unset($end); 

в этом примере мне нужен os_disk

Related of "unset последний элемент массива"

 array_shift($end ); //removes first array_pop($end ); //removes last 

Используйте explode вместо preg_split . Это быстрее. Затем вы можете использовать array_pop и array_shift для удаления элемента с конца и начала массива. Затем используйте implode для повторного объединения оставшихся элементов.

Лучшим решением было бы использовать str_pos для поиска первого и последнего _ и использовать substr для копирования детали между ними. Это вызовет только одну копию, вместо того, чтобы преобразовать строку в массив, изменить ее и поместить массив в строку. (Или вам не нужно собирать их вместе? «Мне нужно« os_disk »в конце меня смущает).

 $item[$fieldneedle] = " node_os_disk_danger "; $status = preg_split('/_/',$item[$fieldneedle]); $status = array_slice($status, 1, -1); 

Ну, если вы хотите, чтобы результат был строкой, зачем беспокоиться о преобразовании в строку?

 $regex = '#^[^_]*_(.*?)_[^_]*$#'; $string = preg_replace($regex, '\\1', $string); 

Он заменяет все до и включая первый символ подчеркивания и все после и после последнего символа подчеркивания. Хороший, легкий и эффективный …

С помощью регулярного выражения вы можете:

 $item[$fieldneedle] = preg_replace("/^[^_]+_(.+)_[^_]+$/", "$1", $item[$fieldneedle]); 

регулярное выражение:

 ^ : begining of the string [^_]+ : 1 or more non _ _ : _ (.+) : capture 1 or more characters _ : _ [^_]+ : 1 or more non _ $ : end of string 

Вы также можете использовать unset для удаления последнего или любого элемента с ключом

 unset($status[0]); // removes the first item unset($status[count($status) - 1]); // removes the last item с unset($status[0]); // removes the first item unset($status[count($status) - 1]); // removes the last item