В качестве примера того, как array_filter
изменит окончательный массив POST, рассмотрим следующую демонстрацию:
<code><!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='utf-8' />
<title>multiple fields, non-empty only selected</title>
</head>
<body>
<form method='post'>
<?php
/* for brevity only 10 results */
for( $i=1; $i <= 10; $i++ ){
$checked = rand(0,5)==1 ? $i : '';
echo "<input type='hidden' name='field_$i' value='$checked' />";
}
if( $_SERVER['REQUEST_METHOD']=='POST'){
/* results without filtering */
printf('<pre>%s
', print_r ($ _POST, 1));/ * результаты ПОСЛЕ фильтрации * / $ _POST = array_filter ($ _POST);printf ('
%s
', print_r ($ _POST, 1));}?>
Пример вывода:
Array
(
[field_1] => 1
[field_2] =>
[field_3] => 3
[field_4] =>
[field_5] => 5
[field_6] =>
[field_7] =>
[field_8] =>
[field_9] =>
[field_10] => 10
)
Array
(
[field_1] => 1
[field_3] => 3
[field_5] => 5
[field_10] => 10
)
Вывод двух операторов print
значительно отличается - использование array_filter
имеетудалил все пустые поля формы из массива - с этой точки обработка данных массива тривиальна с использованием foreach
или другого метода, такого как array_walk
, array_map
и т. д.