Как эффективно выполнять поиск в массиве для заполнения полей формы?

StackOverflow https://stackoverflow.com/questions/84800

  •  01-07-2019
  •  | 
  •  

Вопрос

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top