#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. эй, это работает! Спасибо! я изучу чистые функции.