最新消息:周一至周五21:30分QQ群(161510483)直播,零基础免费学谷歌SEO,WEB前端,PHP入门教程

第十八节:php实现搜索功能

PHP零基础入门 林雍岷 142浏览

php实现搜索功能:整个搜索功能用php的JSON数据实现,json字符串可以访问查询。搜索是许多应用程序常见功能,词汇表项目实现搜索功能,在这个过程中,我将教你PHP中的真实性和虚假性。

php实现搜索功能

创建4.5_truthiness_and_adding_a_search文件夹,把上节课《PHP创建动态详情页》代码复制粘贴到本节课使用。

第一步:index.view.php添加表单

刷新我们会看到搜索表单。

第二步:编写index.php控制器代码

如果search设置,就输出$items的值,否则就显示get_terms的数据,把$items传递到view函数。

第三步:file_function.php文件

分析get_term()函数,就是循环所有的数组中的项目,如果是term是匹配就返回整个$item,所以get_term仅仅返回单一项目。

第四步:创建search_terms函数

第一种方法:array_map

代码解释:

  1. array_map;
  2. 除了 $items回调函数,并在我们的数组中的每个项目上执行该函数;
  3. 如果$items有三个项目,$results也就是3个items。

第二种方法:array_filter

对比解释:

array_filter(arr,fn)

array_map(fn, arr)

要记住他们参数和数组的之间的顺序。

第五步:使用Strpos匹配搜索条件

代码解释:

  1. array_filter
  2. 首先把$items的数组传递进来,接着就是函数
  3. 在函数里面我开始执行搜索
  4. 看hello, world的字符串,和字符串只不过是数组字符
  5. 可以把每个字母都想象成数组中的一个项目,所以H就是位置0
  6. Strpos(‘hello,world’,’ello’)-strpos(haystack, needle)匹配搜索条件
    1. strpos是字符串位置的php内置函数
    2. hello,world作为字符串
    3. ello作为针
  7. 返回我们为搜索词找到针的匹配位置;
  8. 返回位置1,因为ELLO的E位于第一位。

如果我们搜索he,strpos(‘hello, world’, ‘he’);将要返回位置0,因为he的h是在第一位,所以就是0。如果我们搜索Z,strpos(‘hello, world’, ‘z’);将返回false,因为字符hello,world没有z。

第六步:实现search_terms函数

用truthy和falsey解决空白问题

在search输入点击提交,页面显示空白,问题所在我们使用条件会有truthy和falsey

truthy

数字:1、12345、-1都可以叫truthy
字符串:’adfadsfdas’ 可以叫truthy

浏览器输出asfg字符串

空字符串

显示空白

显示空白

我们有css,我们搜索查询是c,c位置0,0是falsey值,可以这么理解:

改为

false不等于false,肯定是错误,所以下面输出就不会执行了。同理:strpos($item->term,$search) != false 也不会执行了。

让0不等于false代码执行,使用===等于号:

  1. 这个0===false例子,他们是不等于的,这个条件是fasle
  2. 如果0!==false例子,他们是不等于的,这个条件是true

因为0的值是完全不等于false的,这个例子我们需要做的是比较,不是等于,0与false比较是不相同的,所以需要用==比较运算符

因为strpos函数会返回位置有可能是0,负数(-1,-2,-3……),0和负数是同样的东西,我们需要用到绝对严格检查,使字符串位置返回的不是非。

definition也包括在搜索条件

把heading也包含到搜索条件

第一步:index.php编写代码

第二步:index.view.php编写代码

下载本节《php实现搜索功能》完整代码

转载请注明:林雍岷 » 第十八节:php实现搜索功能