Я очень новичок в многомерных массивах, и это вызывает у меня много времени.
Мой массив выглядит следующим образом:
$fields = array( "names" => array( "type" => "text", "class" => "name", "name" => "name", "text_before" => "name", "value" => "", "required" => true, ) ) Затем я получил функцию проверки, если эти входы заполнены, если они требуются.
 function checkForm($fields){ foreach($fields as $field){ if($field['required'] && strlen($_POST[$field['name']]) <= 0){ $fields[$field]['value'] = "Some error"; } } return $fields; } 
Теперь моя проблема в этой строке
 $fields[$field]['value'] = "Some error"; 
Я хочу изменить содержимое исходного массива, так как я возвращаю это, но как мне получить имя текущего массива (имена в этом примере) в моем цикле foreach?
  В PHP прохождение по ссылке ( & ) … противоречиво.  Я рекомендую не использовать его, если вы не знаете, зачем вам это нужно, и проверьте результаты. 
Я бы рекомендовал сделать следующее:
 foreach ($fields as $key => $field) { if ($field['required'] && strlen($_POST[$field['name']]) <= 0) { $fields[$key]['value'] = "Some error"; } } 
  Поэтому в основном используйте $field когда вам нужны значения, и $fields[$key] когда вам нужно изменить данные. 
  Использовать & : 
 foreach($arr as &$value) { $value = $newVal; } 
  & передает значение массива в качестве ссылки и не создает новый экземпляр переменной.  Таким образом, если вы измените ссылку, исходное значение изменится. 
  Используйте foreach($fields as &$field){ – поэтому вы будете работать с исходным массивом. 
Подробнее о передаче по ссылке.
 function checkForm(& $fields){ foreach($fields as $field){ if($field['required'] && strlen($_POST[$field['name']]) <= 0){ $fields[$field]['value'] = "Some error"; } } return $fields; } 
Это то, что я предлагаю пройти по ссылке
Попробуй это
 function checkForm($fields){ foreach($fields as $field){ if($field['required'] && strlen($_POST[$field['name']]) <= 0){ $field['value'] = "Some error"; } } return $field; }