首页 > 解决方案 > 如何使用搜索框在 JSON 数组对象 PHP 中搜索

问题描述

我做了一个搜索框,我想在 JSON 数据中搜索,我从这个 url 获取它:https ://jsonplaceholder.typicode.com/todos/

这是我如何接收数据的代码:

<?php

  $url = 'https://jsonplaceholder.typicode.com/todos/';

  $cURL = curl_init();

  curl_setopt($cURL, CURLOPT_URL, $url);
  curl_setopt($cURL, CURLOPT_HTTPGET, true);
  curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);

  curl_setopt($cURL, CURLOPT_HTTPHEADER, array(
      'Content-Type: application/json',
      'Accept: application/json'
  ));

  $result = curl_exec($cURL);

  curl_close($cURL);

  $arrays =  json_decode($result);

 ?>

这是搜索框和按钮的 HTML 代码:

<form action="search.php" method="POST" style="search-style";>
      <input type="text" name="search" placeholder="Search" >
      <button type="submit" name="submit-search">Search</button>
</form>

这是搜索的 PHP 代码,但我不知道如何完成它:

<div>
  <?php
    if (isset($_POST['submit-search'])) {
      $search = $????? ($_POST['search']);  // i dont know how it works, i need a variable 

      foreach ($arrays as $key => $value) {
        echo $value -> $search ;
      }
    }
       ?>
</div>

最后我需要在表格或类似的东西中显示结果。但我无法得到结果..有什么建议吗?提前致谢!

标签: phpjson

解决方案


您将请求发送给search.php实际上您重定向到 search.php。
要在一页中使用此代码,您必须将search.php代码放在主文件中。
打开站点时您会收到数据。
并在搜索表单中发送一个键(字符串标题ID ...任何东西),最后一部分过滤它,您的最终代码必须是这样的

<?php
$url = 'https://jsonplaceholder.typicode.com/todos/';
$cURL = curl_init();
curl_setopt($cURL, CURLOPT_URL, $url);
curl_setopt($cURL, CURLOPT_HTTPGET, true);
curl_setopt($cURL, CURLOPT_RETURNTRANSFER, true);
curl_setopt($cURL, CURLOPT_HTTPHEADER, array(
    'Content-Type: application/json',
    'Accept: application/json'
));
$result = curl_exec($cURL);
curl_close($cURL);
$arrays =  json_decode($result);
?>
<form action="#" method="POST" style="search-style";>
    <input type="text" name="Title" placeholder="Enter Title..." >
    <button type="submit" name="submit_search">Search</button>
</form>

<div>
    <?php
    if(isset($_POST['submit_search']) && !empty($_POST['Title'])) {
        $Title = $_POST['Title'];
        foreach($arrays as $value) {
            if(strpos($value->title, $Title) !== false) {
                echo "Title : ";
                echo $value->title ."<br/>";
                echo "Id : " ;
                echo $value->id ."<br/>";
            }
        }
    }
    ?>
</div>



推荐阅读