Массив будет воспроизводить только последний вывод при сохранении в переменную PHP

#php #html

#php #HTML

Вопрос:

У меня есть следующая функция в моей php-программе.

 $out = "";  printArray($_POST); function printArray($array){  global $out;  foreach ($array as $key =gt; $value){  $out = "$key: $value lt;brgt;";  }  }  echo $out;  

Он должен был получить все мои значения записей вместе с именами переменных и сохранить их все в переменную, но он повторяет только последнее в моем списке. Тем временем, если я не сохраню выходные данные foreach в переменную…

 printArray($_POST);  function printArray($array){  foreach ($array as $key =gt; $value){  echo "$key: $value lt;brgt;";  }  }  

это дает просто прекрасные результаты.

 first_name: Test last_name: Test dob1: dob2: dob3: current_grade: shcool: M_C: type_of_session_text: date_session_info: (shortened for brevity)   

что здесь происходит?

Комментарии:

1. Вы перезаписываете переменную в каждом цикле. Решите, хотите ли вы объединить его в строку или добавить в массив.

2. Вы также не должны привыкать использовать global. Вы могли бы легко сделать это с return помощью А. Что-то вроде $out = printArray($_POST); и в вашей функции return $whatever_you_set;

3. так нравится function printArray($array){ $out = ""; foreach ($array as $key =gt; $value){ $out.= "$key: $value lt;brgt;"; return $out; } } echo $out; ??

4. оп ухает, что все как-то испортилось.

Ответ №1:

Это происходит потому, что каждое изменение вы устанавливаете $out заново, не сохраняя прежних значений. Вы могли бы сделать:

 function printArray($array){  foreach ($array as $key =gt; $value){  $out .= $key.": ".$value."lt;brgt;";  }   return $out; }   

С .= помощью вы «добавляете» дополнительную строку в эту переменную. Технический термин — «сцепление».

global Кроме того, следует избегать, так как это явный признак плохого программирования. Функция должна возвращать значение, логика, вызывающая функцию, решает, что с ней делать. Я рекомендую вам провести небольшое исследование «чистых» функций (простая концепция).

Комментарии:

1. Хотя ваш ответ был правильным, в нем не было вопроса » Почему «, «Почему этот ответ работает», «что исправлено, что вопрос был неправильным»:) Поэтому я добавил это к вашему ответу

2. спасибо, мужик, я попробую.

3. эй, это работает! Спасибо! я изучу чистые функции.