Поддержка Проблемы и решения PHP Поиск и Вывод

  • Добрый день, возможно знаете, как можно это реализовать. Всем спасибо за ответы!

    У меня есть подобный массив

    [{
      "name": "Albania",
      "id": "008",
      "import_export_and_transit_procedures": [{
        "title": "General Directory of Customs",
        "description": "In the website of the General Directory of Customs under the section \"Institution-publications\" the fiscal newssheet and the international trade data are being periodically updated.\n\nMoreover, the section \"business- customs procedures\" gives detailed information for all the customs procedures.",
        "email": null,
        "telephone": null,
        "fax": null,
        "websites": ["www.dogana.gov.al", "http:\/\/www.dogana.gov.al\/english\/c\/169\/181\/325\/nipt-registration", "http:\/\/www.dogana.gov.al\/english\/c\/169\/181\/292\/entry-and-exit-of-goods", "http:\/\/www.dogana.gov.al\/english\/c\/169\/181\/293\/declaration-at-customs", "http:\/\/www.dogana.gov.al\/english\/c\/169\/181\/294\/import-transit-export"]
      }],
      "enquiry_points": [{
        "title": "General Directorate of Customs - Help Desk Sector",
        "description": "This site and enquiry point, give general information about the activities and the operations of Customs.",
        "email": null,
        "telephone": "+355 42 232 988",
        "fax": "",
        "websites": ["www.dogana.gov.al"]
      }]
    }, {

    В котором есть такие ключи, как Name и ID

    Мне нужно что бы пользователь писал-искал в input скажем Al и ему выводило Albania и ID этой страны

    У меня есть подобный код

    $data2 = json_decode($response2, true, 999, JSON_THROW_ON_ERROR);
    
    $cnat = '';
    foreach ($data2 as $reposit2): if($reposit2['import_export_and_transit_procedures'] ?? $reposit2['enquiry_points'] ?? $reposit2['single_window']):
    $cnat .= '<p>'.$reposit2['name'].'</p><p>'.$reposit2['id'].'</p>';
    endif;
    endforeach;
    	$mystring = $cnat;
    $findme   = htmlspecialchars($_POST['search']);
    
    $patt = preg_quote($findme, '~');
    preg_match_all("~\w*$patt\w*~", $mystring, $arr);
    
    $finish = '';
    foreach ($arr as $result): if ($result[0]):
    foreach ($result as $result2){$finish .= '<div style="color:#a00">'.$result2.'</div>';}
    else: $finish .= 'Not Found';
    endif;
    endforeach;
    return $finish;

    Где $data2 это мой извлеченный из API массив.

    Но при таком поиске выводится только название страны Albania, как мне подвязать к ней id, что бы при поиске Al — Albania система автоматом подтягивала id и результат должен быть Albania 008

    • Тема изменена 3 месяца назад пользователем Marten.
Просмотр 1 ответа (всего 1)
  • Автор Marten

    (@marten1)

    В итоге получилось вот это, но не совсем то если честно, если есть мысли напишите ваш ответ пожалуйста

    $filtered = [];
    foreach ($data2 as $reposit2) { if($reposit2['import_export_and_transit_procedures'] ?? $reposit2['enquiry_points'] ?? $reposit2['single_window']) {
        if (strpos($reposit2['name'], $_POST['lua'])!==false) {
            $filtered[] = $reposit2;
        }
    }}
    if($filtered[0]){ foreach ($filtered as $filtered2) {
    echo $filtered2[name];}}
    else{
    echo 'Error 404';}
    
Просмотр 1 ответа (всего 1)