Вместо функции, которая заменяет только вхождения одного значения в массиве, есть более общая array_map
:
array_map(function ($v) use ($value, $replacement) {
return $v == $value ? $replacement : $v;
}, $arr);
Чтобы заменить множественные вхождения нескольких значений, используя массив значений => replace:
array_map(function ($v) use ($replacement) {
return isset($replacement[$v]) ? $replacement[$v] : $v;
}, $arr);
Чтобы заменить одно вхождение одного значения, вы должны использовать array_search
, как и вы. Поскольку реализация настолько коротка, у разработчиков PHP нет особых оснований создавать стандартную функцию для выполнения задачи. Не говоря уже о том, что вам не имеет смысла создавать такую функцию, если вам часто это нужно.