I suspect you are checking the wrong way. In your check of the scores array, if any one value is greater than zero you set valid to True, and do not check the remaining entries. A better method would probably be:
$isValid = true;
foreach ($data['staff_score'] as $key => $value){
if ($value == 0){
$isValid = false;
break;
}
}
You also have a redundant piece of code at:
if($ValidProcess) {
$ValidProcess = true;
}