このような例でフォーム配列に正しくインデックスを付ける方法を教えてください

WBOY
リリース: 2016-06-23 13:57:05
オリジナル
821 人が閲覧しました

少し複雑に感じるので、私が遭遇した問題を説明しましょう
クライアント フォームには、item 配列や info 配列などの複数の配列があります。例:






フォームを確認するには、これらの 4 つの項目を入力する必要があります

バックグラウンドで関数を直接カプセル化しました。 $_REQUEST['id'] が空であることを確認します
しかし、関数のせいで、このように値が渡されるのは非常に面倒です

function validator($name){
$_REQUEST[' $name を決定します。 '] は空です
}

validator('id')、これは操作が簡単です
フォーム配列ではない場合、フォーム配列は非常に面倒です。要素を正しくインデックスする必要があります

さて、私は欲しいものです。質問したいのは、そのような効果を実現する方法です
validator('item["title"]')

関数内の通常のインデックスは、配列層に関係なく
$_REQUEST['item']['title'] です

正しい配列要素文字列が渡されていれば、その要素のフォーム項目に正しくインデックスを付けることができます。そのような関数が見つからない場合は、文字列を逆アセンブルする方法しか使用できません。もっと良い方法があるかどうか知ってください

率直に言うと、問題は未知の項目と配列インデックスのタイトルを正しく取得する方法です。もちろん、これは 2 層の例ですが、より多くの層を実装できればより良いでしょう。

ディスカッションへの返信(解決策)

配列を渡す方法はないようです これを実装する関数は

array_walk_recursiveで十分です

鍵はnull判定後の演算にあります


array_walk_recursiveが渡される配列、重要なのは、渡されるのはフォーム配列内の要素であり、ほとんどが文字列であるということです

$ar = array(  'item' => array('title' => '', 'intro' => ''),  'info' => array('userid' => '', 'username' => ''),);function validator($v, $k) {  if(empty($v)) echo "$k 不能为空\n";}array_walk_recursive($ar, 'validator');
ログイン後にコピー
title 不能为空intro 不能为空userid 不能为空username 不能为空
ログイン後にコピー

もちろん print コンテンツのほとんどは要件を満たしていません

そこで私は、「鍵は後の操作にあります」と言いました短い判決」

分かりました、ありがとう、すべての判決を読むことです

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート