false в вашем случае - это что-то пошло не так. Это не информативно. Используйте исключения.
Что касается проверок - их не достаточно.
Обязательно проверяйте типы аргументов для простых типов, для обьектов - лучше тайп хинтинг. Например что произойдет, если вместо массива вам влетит обьект?
Могу порекомендовать либу для быстрой валидации аргументов:
https://github.com/ko-ko-ko/php-assert
В вашем случае проверка будет такая:
/**
* @param array $array
* @param int $uid
* @throws InvalidArgumentException
* @throws InvalidArrayException
* @throws InvalidIntException
* @throws InvalidIntOrFloatException
* @throws InvalidNotEmptyException
* @throws InvalidNotObjectException
* @throws InvalidRegexpPatternException
* @throws InvalidStringException
* @throws NumberNotPositiveException
* @throws StringNotMatchRegExpException
*/
public function validChangeData($array, $uid)
{
Assert::assert($array, 'array')->isArray()->notEmpty();
Assert::assert($uid, 'uid')->int()->positive();
if (!array_key_exists('email', $array)) {
throw new \InvalidArgumentException('Argument "$array" has no element "email"');
}
$email = $array['email'];
Assert::assert($email, 'email')->string()->notEmpty()->match(
'/^[a-z0-9](([_\.-]?[a-z0-9]+)*){0,19}@([a-z0-9]([_-]?[a-z0-9]+)?\.){1,3}[a-z]{2,6}$/i'
);
$this->updateUserData($array, $uid);
}