2008-09-17 6 views
0

Je cherche un moyen efficace pour extraire les données que je veux d'un tableau appelé $ submission_info afin que je puisse facilement remplir mes champs de formulaire. La taille du tableau est d'environ 120.Comment rechercher efficacement un tableau pour remplir des champs de formulaire?

Je veux trouver le nom du champ et extraire le contenu. Dans ce cas, le nom du champ est loanOfficer et le contenu est 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 
    ) 

Je souhaite trouver le nom du champ et en extraire le contenu. Dans ce cas, le nom du champ est loanOfficer et le contenu est John Doe.

+0

Votre question semble trop spécifique. Voyez si vous pouvez le généraliser un peu plus – SeanDowney

+0

Je l'ai édité à peu près aussi général que je sais comment le faire. Est-ce mieux? – Haabda

Répondre

2

Il est probablement préférable de parcourir chaque entrée et de créer un nouveau tableau associatif.

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

Ensuite, vous pouvez simplement trouver les champs de formulaire en obtenant la valeur de newArray $ [champ < vous remplir >]. Sinon, vous devrez rechercher $ submission_info à chaque fois pour le champ correct.

+0

Merci rcar, je vais essayer dès maintenant et vous faire savoir comment ça se passe. – Haabda

+0

C'est ce que j'ai fait! Merci beaucoup pour votre aide. – Haabda

0

Je suppose que php a un tableau associatif (communément appelé dictionnaire ou hashtable). La routine la plus efficace consiste à parcourir une fois la baie et à placer les champs dans un dictionnaire sur le nom du champ. Puis, au lieu d'avoir à chercher dans le tableau d'origine lorsque vous voulez trouver un champ spécifique (opération O (n)). Vous venez d'utiliser le dictionnaire pour le récupérer par le nom du champ dans une opération O (1) (ou constante). Bien sûr, le premier passage sur le tableau pour peupler le dictionnaire serait O (n) mais c'est un coût une fois plutôt que de payer la même pénalité pour chaque recherche.

1

Je ne sais pas si cela est la solution optimale:

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 
    } 
} 

La prochaine fois: Les questions sont plus utiles pour vous et les autres si vous les généralisent de telle sorte qu'ils couvrent un sujet primordial que vous et peut-être d'autres n » Je comprends. On dirait que vous pourriez utiliser un cours de recyclage de tableau ...

+0

Votre réponse est ce que j'ai pensé au début. Mais, je ne voulais pas faire une boucle sur l'ensemble du tableau pour chaque recherche. La réponse associative array de rcar me semble être une solution plus efficace. – Haabda

Questions connexes