Как мне эффективно искать массив для заполнения полей формы? - PullRequest
0 голосов
/ 17 сентября 2008

Я ищу эффективный способ извлечения нужных мне данных из массива $ 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 .

Ответы [ 3 ]

2 голосов
/ 17 сентября 2008

Вам, вероятно, лучше всего пройтись по каждой записи и создать из нее новый ассоциативный массив.

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

Тогда вы можете просто найти поля формы, получив значение из $ newarray [ <поле, которое вы заполняете> ]. В противном случае вам придется каждый раз искать в $ submission_info правильное поле.

1 голос
/ 17 сентября 2008

Не уверен, что это оптимальное решение:

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 голосов
/ 17 сентября 2008

Я предполагаю, что php имеет ассоциативный массив (обычно называемый словарем или хеш-таблицей). Самая эффективная процедура - выполнить массив один раз и поместить поля в словарь, связанный с именем поля.

Тогда вместо необходимости искать в исходном массиве, когда вы хотите найти конкретное поле (O (n)), операция. Вы просто использовали словарь, чтобы получить его по имени поля в операции O (1) (или константы). Конечно, первый проход по массиву для заполнения словаря будет O (n), но это единовременная стоимость, вместо того, чтобы платить один и тот же штраф за каждый поиск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...