2008-09-17 4 views
0

私は$ submission_infoという配列から必要なデータを取り出す効率的な方法を探していますので、フォームフィールドを簡単に自動入力できます。配列のサイズは約120です。配列を効率的に検索してフォームフィールドに入力するにはどうすればよいですか?

フィールド名を探して内容を抽出したいと思います。この場合、フィールド名はloanOfficerであり、内容はJohn Doeです。

Output of Print_r($submission_info[1]): 

Array ( 
    [field_id] => 2399 
    [form_id] => 4 
    [field_name] => loanOfficer 
    [field_test_value] => ABCDEFGHIJKLMNOPQRSTUVWXYZ 
    [field_size] => medium 
    [field_type] => other 
    [data_type] => string 
    [field_title] => LoanOfficer 
    [col_name] => loanOfficer 
    [list_order] => 2 
    [admin_display] => yes 
    [is_sortable] => yes 
    [include_on_redirect] => yes 
    [option_orientation] => vertical 
    [file_upload_dir] => 
    [file_upload_url] => 
    [file_upload_max_size] => 1000000 
    [file_upload_types] => 
    [content] => John Doe 
    ) 

フィールド名を探して内容を抽出したいと考えています。この場合、フィールド名はloanOfficerであり、内容はJohn Doeです。

+0

あなたの質問はあまりにも特定のようです。あなたがそれをもう少し一般化できるかどうかを確認してください。 – SeanDowney

+0

私はそれを作る方法を知っているので、私はそれを一般的に編集しました。それは良いですか? – Haabda

答えて

2

おそらく、各エントリを調べて、その中から新しい連想配列を作成するのが最善でしょう。

foreach($submission_info as $elem) { 
    $newarray[$elem["field_name"]] = $elem["content"]; 
} 

次に、あなただけの$ NEWARRAY [あなたが>に充填している<フィールド]から値を取得することにより、フォームフィールドを見つけることができます。それ以外の場合は、正しいフィールドのたびに$ submission_infoを検索する必要があります。

+0

rcarさん、ありがとう、私は今それを試し、それがどのように判明したかをお知らせします。 – Haabda

+0

それはそれをしました!ご助力ありがとうございます。 – Haabda

0

私はphpに連想配列(一般に辞書またはハッシュテーブルと呼ばれる)があると仮定しています。最も効率的なルーチンは、配列を一度実行し、フィールド名にキーを付けた辞書にフィールドを入れることです。

特定のフィールド(O(n))操作を検索するときに元の配列を検索する必要はありません。辞書を使用してO(1)(または定数)操作でフィールドの名前で検索しただけです。もちろん、配列を最初に渡して辞書を埋めるのはO(n)ですが、それはすべてのルックアップに対して同じペナルティを支払うのではなく、1回限りのコストです。

1

ない、これが最適解であるかどうかわから:

foreach($submission_info as $info){ 
    if($info['field_name'] == 'loanOfficer'){ //check the field name 
    $content = $info['content']; //store the desired value 
    continue; //this will stop the loop after the desired item is found 
    } 
} 

次の時間:あなたは彼らがあなたと、おそらく他の人ドン」いくつかの包括的なトピックをカバーすることを彼らがそのような一般場合 質問は、あなたと他の人に、より便利です理解する。あなたは配列リフレッシャーコースを使用することができるようだ...

+0

あなたの答えは私が最初に考えたものです。しかし、私はすべての単一ルックアップのために配列全体をループしたくありませんでした。 rcarからの連想配列の答えは私にとってはより効率的な解決策に思えます。 – Haabda

関連する問題