Как эффективно выполнять поиск в массиве для заполнения полей формы?
Вопрос
Я ищу эффективный способ извлечь нужные данные из массива $submission_info, чтобы можно было легко автоматически заполнять поля формы.Размер массива около 120.
Я хочу найти имя поля и извлечь содержимое.В данном случае имя поля кредитный инспектор и содержание Джон Доу.
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
)
Я хочу найти имя поля и извлечь содержимое.В данном случае имя поля кредитный инспектор и содержание Джон Доу.
Решение
Вероятно, вам лучше просмотреть каждую запись и создать из нее новый ассоциативный массив.
foreach($submission_info as $elem) {
$newarray[$elem["field_name"]] = $elem["content"];
}
Затем вы можете просто найти поля формы, получив значение из $newarray[<поле, которое вы заполняете>].В противном случае вам придется каждый раз искать в $submission_info правильное поле.
Другие советы
Не уверен, что это оптимальное решение:
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
}
}
В следующий раз:Вопросы будут более полезны для вас и других, если вы обобщите их так, чтобы они охватывали какую-то всеобъемлющую тему, которую вы и, возможно, другие не понимаете.Похоже, вам не помешал бы курс повышения квалификации по массивам...
Я предполагаю, что php имеет ассоциативный массив (обычно называемый словарем или хеш-таблицей).Наиболее эффективной процедурой было бы один раз просмотреть массив и поместить поля в словарь с указанием имени поля.
Тогда вместо поиска в исходном массиве, когда вы хотите найти определенное поле (операция O (n)).Вы только что использовали словарь, чтобы получить его по имени поля в операции O(1) (или константе).Конечно, первый проход по массиву для заполнения словаря будет O(n), но это единовременная стоимость, а не оплата одного и того же штрафа за каждый поиск.