PHP foreach cambiar los valores de la matriz original

Soy muy nuevo en arreglos multidimensionales, y esto me está molestando mucho.

Mi matriz es la siguiente:

$fields = array(
    "names" => array(
         "type"         => "text",
         "class"        => "name",
         "name"         => "name",
         "text_before"  => "name",
         "value"        => "",
         "required"     => true,
    )
)

Luego tengo una función que verifica si estas entradas están completas, si son necesarias.

function checkForm($fields){
    foreach($fields as $field){
        if($field['required'] && strlen($_POST[$field['name']]) <= 0){
            $fields[$field]['value'] = "Some error";
        }
    }
    return $fields;
}

Ahora mi problema es esta linea

$fields[$field]['value'] = "Some error";

Quiero cambiar el contenido de la matriz original, ya que estoy devolviendo esto, pero ¿cómo obtengo el nombre de la matriz actual (nombres en este ejemplo) en mi bucle foreach?

Respuestas a la pregunta(5)

Su respuesta a la pregunta