毎日のPHP開発では、特にフォームまたはバッチデータの送信を処理する場合、多数の入力値を初期化してフィルタリングする必要があることがよくあります。この記事では、array_fill()とarray_filter()の2つの関数を使用して、バッチ入力値の初期化と有効性フィルタリングを実装する方法を紹介します。
array_fill(int $ start_index、int $ count、mixed $ value):array
固定構造データ収集の初期化に適した配列を作成し、指定された値で埋めるために使用されます。
array_filter(array $ array、?callable $ callback = null、int $ mode = 0):array
配列内の値をろ過するために使用されます。デフォルトでは、配列内のfalse ( 0 、 false 、 null 、 ''など)に相当するすべての要素が削除され、カスタムコールバック関数を介してより複雑なフィルタリングロジックを実装できます。
10のエントリを備えたバッチフォームの提出に取り組んでいるとします。各エントリは、ユーザーが入力した名前フィールドです。私たちは願っています:
これらのエントリをデフォルトの空の文字列として初期化します。
フィルタリングされていないアイテムを除外し、名前が記入されたアイテムのみが次の処理またはストレージのために保持されます。
<?php
// ユーザーが送信したデータが次のとおりであると仮定します(部分的に空)
$submittedData = [
'Alice',
'',
'Bob',
null,
'Charlie',
'',
' ',
'David',
false,
'Eve'
];
// 最初のステップ:初期化 10 エントリ,デフォルト値は空の文字列です(提出されていない場合、データが不完全になります)
$inputCount = 10;
$defaultData = array_fill(0, $inputCount, '');
// ステップ2:将用户提交的数据合并到初期化数组中,インデックスの欠落を避けてください
$mergedData = array_replace($defaultData, $submittedData);
// ステップ3:使用 array_filter 無効なデータをフィルタリングします(空の文字列のように、null、false、スペースなど)
$validData = array_filter($mergedData, function ($value) {
// 使用 trim スペースを取り外します,次に、空であるかどうかを判断します
return trim($value) !== '';
});
// ステップ4:有効なデータを処理します(保存されている場合、確認する、出力)
foreach ($validData as $index => $name) {
echo "第 " . ($index + 1) . " アイテム有効な入力:{$name}\n";
}
第 1 アイテム有効な入力:Alice
第 3 アイテム有効な入力:Bob
第 5 アイテム有効な入力:Charlie
第 8 アイテム有効な入力:David
第 10 アイテム有効な入力:Eve
この組み合わせは、次のような実際のアプリケーションで非常に役立ちます。
マルチラインのメッセージボード。
バルクユーザーインポート。
バッチ(URL配列、API要求データなど)にパラメーターを設定します。
ユーザーがアップロードしたバッチフィールド(バッチのアップロード時のタイトル、説明など)を事前に処理します。
たとえば、フォームからURLアドレスのセットを取得し、空でないことを確認する必要がある場合があります。
$urls = [
'https://m66.net/api/user',
'',
'https://m66.net/docs',
null,
' '
];
$urls = array_filter($urls, function ($url) {
return trim($url) !== '';
});
// 出力有效链接
print_r($urls);
array_fill()を使用してデータ構造を初期化し、 array_filter()でユーザーがサビされたデータをクリーニングすることにより、PHPでのバッチデータの処理フローを大幅に簡素化できます。この方法は、効率的かつ簡潔なだけでなく、コードの堅牢性と保守性も向上させます。すべてのPHP開発者が習得すべきスキルです。
フォーム、API、またはデータベースからのバッチデータ入力をよく処理する場合は、これら2つの機能を使用して処理ロジックを最適化してみてください。