少し複雑に感じるので、私が遭遇した問題を説明しましょう
クライアント フォームには、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 不能为空
そこで私は、「鍵は後の操作にあります」と言いました短い判決」
分かりました、ありがとう、すべての判決を読むことです