Обновлено
Так как сообщение было обновлено, и у меня была возможность немного поспать, я понял, что мой ответ был глупым.Если у вас есть заданный ключ и вам нужно изменить его значение, зачем перебирать весь массив?
$user = 'user1';
$search = 'search1';
$replace = 'search4';
$array = array('user1' => 'search1', 'user2' => 'search2');
if (isset($array[$user]) && $search === $array[$user]) $array[$user] = $replace;
Похож на метод @ Джозефа (почти такой же), но с несколькими изменениями:
$user = 'user1';
$array = array("user1" => "search1", "user2" => "search2" );
foreach($array as $key => &$value) {
if ($key === $user) {
$value = 'search4';
break; // Stop iterating after key has been found
}
}
Передача по ссылке - лучший способ редактирования внутри foreach
, и, возможно, быстрее.