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
代码解释:
- array_map;
- 除了 $items回调函数,并在我们的数组中的每个项目上执行该函数;
- 如果$items有三个项目,$results也就是3个items。
第二种方法:array_filter
对比解释:
array_filter(arr,fn)
array_map(fn, arr)
要记住他们参数和数组的之间的顺序。
第五步:使用Strpos匹配搜索条件
代码解释:
- array_filter
- 首先把$items的数组传递进来,接着就是函数
- 在函数里面我开始执行搜索
- 看hello, world的字符串,和字符串只不过是数组字符
- 可以把每个字母都想象成数组中的一个项目,所以H就是位置0
- Strpos(‘hello,world’,’ello’)-strpos(haystack, needle)匹配搜索条件
- strpos是字符串位置的php内置函数
- hello,world作为字符串
- ello作为针
- 返回我们为搜索词找到针的匹配位置;
- 返回位置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代码执行,使用===等于号:
- 这个0===false例子,他们是不等于的,这个条件是fasle
- 如果0!==false例子,他们是不等于的,这个条件是true
因为0的值是完全不等于false的,这个例子我们需要做的是比较,不是等于,0与false比较是不相同的,所以需要用==比较运算符
因为strpos函数会返回位置有可能是0,负数(-1,-2,-3……),0和负数是同样的东西,我们需要用到绝对严格检查,使字符串位置返回的不是非。
definition也包括在搜索条件
把heading也包含到搜索条件
第一步:index.php编写代码
第二步:index.view.php编写代码
转载请注明:林雍岷 » 第十八节:php实现搜索功能