PHP迭代器和迭代的实现与使用方法分析,基于Vue实现关键词实时搜索高亮显示关键词

最后,如果本文对你的学习或者工作有帮助的话,麻烦给个star鼓励下啦~~~

本文实例讲述了PHP迭代器和迭代的实现与使用方法。分享给大家供大家参考,具体如下:

    File表示实现复制功能的日志,即上图中的Binary
log;Position则表示binlog日志文件的偏移量之后的都会同步到slave中,那么在偏移量之前的则需要我们手动导入

通过RegExp实现对关键词的替换,通过添加class实现关键词高亮显示

您可能感兴趣的文章:

  • PHP设计模式之迭代器模式
  • PHP设计模式之迭代器模式的深入解析
  • PHP迭代器的内部执行过程详解
  • PHP迭代器实现斐波纳契数列的函数
  • PHP迭代器接口Iterator用法分析
  • PHP聚合式迭代器接口IteratorAggregate用法分析
  • PHP SPL
    被遗落的宝石【SPL应用浅析】
  • PHP
    SPL标准库之数据结构栈(SplStack)介绍
  • PHP
    SPL标准库中的常用函数介绍
  • PHP基于SPL实现的迭代器模式示例

         出现下图,log_bin为ON则表示开启成功,OFF表示开启失败

<template>
 <div class="Home">
  <input v-model="keyWords" type="text" placeholder="请输入关键词" @input="handleQuery">
  <ul>
    <li v-for="(item,index) in results" :key='index' v-html='item.name'></li>
  </ul>
 </div>
</template>

<script>
export default {
 name: 'Home',
 data () {
  return {
   keyWords: '',
   results: []
  }
 },
 methods: {
  clearTimer () {
   if (this.timer) {
    clearTimeout(this.timer)
   }
  },
  handleQuery (event) {
   this.clearTimer()
   console.log(event.timeStamp)
   this.timer = setTimeout(() => {
    console.log(event.timeStamp)
    // console.log(this.lastTime)
    // if (this.lastTime - event.timeStamp === 0) {
    this.$http.post('/api/vehicle').then(res => {
     console.log(res.data.data)
     this.changeColor(res.data.data)
    })
    // }
   }, 2000)
  },

  changeColor (resultsList) {
   resultsList.map((item, index) => {
    // console.log('item', item)
    if (this.keyWords && this.keyWords.length > 0) {
     // 匹配关键字正则
     let replaceReg = new RegExp(this.keyWords, 'g')
     // 高亮替换v-html值
     let replaceString =
      '' + this.keyWords + ''
     resultsList[index].name = item.name.replace(
      replaceReg,
      replaceString
     )
    }
   })
   this.results = []
   this.results = resultsList
  }
 }
}
</script>

<!-- Add "scoped" attribute to limit CSS to this component only -->
<style>
.search-text{
color: red;
}
</style>

如果需要实现更加复杂的行为,可以通过一个iterator(迭代器)来实现

betway必威亚洲官网 1

实时搜索通过触发input事件和定时器来实现

class Myclass{
  public $a = 'php';
  public $b = 'onethink';
  public $c = 'thinkphp';
}
$myclass = new Myclass();
//用foreach()将对象的属性循环出来
foreach($myclass as $key.'=>'.$val){
  echo '$'.$key.' = '.$val."<br/>";
}
/*返回
  $a = php
  $b = onethink
  $c = thinkphp
*/

    修改root密码    

如果不喜欢看文字的朋友我写了一个demo方便已经上传到了github上,可以clone下来直接看代码 

更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结betway必威亚洲官网,》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

betway必威亚洲官网 2

 changeColor (resultsList) {
   resultsList.map((item, index) => {
    // console.log('item', item)
    if (this.keyWords && this.keyWords.length > 0) {
     // 匹配关键字正则
     let replaceReg = new RegExp(this.keyWords, 'g')
     // 高亮替换v-html值
     let replaceString =
      '' + this.keyWords + ''
     resultsList[index].name = item.name.replace(
      replaceReg,
      replaceString
     )
    }
   })
   this.results = []
   this.results = resultsList
}

PHP的面向对象引擎提供了一个非常聪明的特性,就是,可以使用foreach()方法通过循环方式取出一个对象的所有属性,就像数组方式一样,代码如下:

 mysql> show master status \G

betway必威亚洲官网 3

希望本文所述对大家PHP程序设计有所帮助。

betway必威亚洲官网 4

注意:如果时间设置过短或者说我们服务器请求较慢的话,可能第一次查询还没有返回便进行了第二次查询,那么返回的数据将是两次查询的结果,造成查询结果的混乱,如果使用的是axios可以利用axios.CancelToken来终止上一次的异步请求,防止旧关键字查询覆盖新输入的关键字查询结果。

//迭代器接口
interface MyIterator{
  //函数将内部指针设置回数据开始处
  function rewind();
  //函数将判断数据指针的当前位置是否还存在更多数据
  function valid();
  //函数将返回数据指针的值
  function key();
  //函数将返回将返回当前数据指针的值
  function value();
  //函数在数据中移动数据指针的位置
  function next();
}
//迭代器类
class ObjectIterator implements MyIterator{
  private $obj;//对象
  private $count;//数据元素的数量
  private $current;//当前指针
  function __construct($obj){
    $this->obj = $obj;
    $this->count = count($this->obj->data);
  }
  function rewind(){
    $this->current = 0;
  }
  function valid(){
    return $this->current < $this->count;
  }
  function key(){
    return $this->current;
  }
  function value(){
    return $this->obj->data[$this->current];
  }
  function next(){
    $this->current++;
  }
}
interface MyAggregate{
  //获取迭代器
  function getIterator();
}
class MyObject implements MyAggregate{
  public $data = array();
  function __construct($in){
    $this->data = $in;
  }
  function getIterator(){
    return new ObjectIterator($this);
  }
}
//迭代器的用法
$arr = array(2,4,6,8,10);
$myobject = new MyObject($arr);
$myiterator = $myobject->getIterator();
for($myiterator->rewind();$myiterator->valid();$myiterator->next()){
  $key = $myiterator->key();
  $value = $myiterator->value();
  echo $key.'=>'.$value;
  echo "<br/>";
}
/*返回
  0=>2
  1=>4
  2=>6
  3=>8
  4=>10
*/

    出现如下信息表示启动成功

在handleQuery方法中有一个定时器,通过设置时间来控制搜索的执行,由于输入时input的框中的值总是变化的,所以每次变化都会执行一次handleQuery,我们通过clearTimer方法清除timer定时器,如果两次输入的间隔时间小于你设置的时间间隔(2s)的话第一个定期器将会被清除,同时执行第二个定时器。这样就实现了实施搜多的控制,而不是每次输入的时候就去请求数据。

                    master_host=’192.168.0.4′,

下面是demo运行的效果图

 mysql> use mysql
    mysql> update user set host = '192.168.0.4' where user = 'root';
    mysql> FLUSH PRIVILEGES;

您可能感兴趣的文章:

  • vue实现点击当前标签高亮效果【推荐】
  • vuejs
    切换导航条高亮(路由菜单高亮)的方法示例
  • vue
    路由嵌套高亮问题的解决方法
  • vue结合Echarts实现点击高亮效果的示例
  • vue实现a标签点击高亮方法
  • Vue-路由导航菜单栏的高亮设置方法
  • 详解Webstorm
    新建.vue文件支持高亮vue语法和es6语法
  • Sublime
    Text新建.vue模板并高亮(图文教程)
  • 详解在WebStorm中添加Vue.js单文件组件的高亮及语法支持
  • 详解让sublime
    text3支持Vue语法高亮显示的示例

  1、master上开启binlog日志

<input v-model="keyWords" type="text" placeholder="请输入关键词" @input="handleQuery">

      登录mysql   

好了闲话不多说直接上代码

betway必威亚洲官网 5

实时搜索

  1、  解压到/usr/local目录   

高亮显示

    建立mysql默认的配置文件/etc/my.cnf,并添加图片中内容

 clearTimer () {
   if (this.timer) {
    clearTimeout(this.timer)
   }
  },
  handleQuery (event) {
   this.clearTimer()
   console.log(event.timeStamp)
   this.timer = setTimeout(() => {
    console.log(event.timeStamp)
    // console.log(this.lastTime)
    // if (this.lastTime - event.timeStamp === 0) {
    this.$http.post('/api/vehicle').then(res => {
     console.log(res.data.data)
     this.changeColor(res.data.data)
    })
    // }
   }, 2000)
  },

    初次登录没有修改root的密码,操作数据库会出现如下错误提示,那么需要修改root用户的密码

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

         重启MySQL服务并设置读取锁定    

在每次输入框的值变化的时候都会执行handleQuery方法

                各个参数含义:

最近在做移动real-time-search于实时搜索和关键词高亮显示的功能,通过博客的方式总结一下,同时希望能够帮助到别人~~~

[mysqld]
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
user=mysql
port=3306
log-bin=mysql-bin
server-id=223

在查询到结果后执行changeColor方法将查询出来的数据传递过来通过RegExp来将关键词替换成huml标签,同时用vue中的v-html进行绑定。最后将demo完整的代码展示出来

    查看mysql是否启动成功

    先登录到mysql 

         登录slave数据库,并做如下设置

  3、拷贝数据

您可能感兴趣的文章:

  • 分析MySQL复制以及调优原理和方法
  • Linux下MySQL数据库的主从同步复制配置
  • 详解Docker方式实现MySql
    主从复制(实践篇)
  • Mysql中复制详细解析
  • MySQL高可用解决方案MMM(mysql多主复制管理器)
  • MySQL5.7.18主从复制搭建(一主一从)教程详解
  • 详解MySQL实现主从复制过程
  • 利用pt-heartbeat监控MySQL的复制延迟详解
  • 详解MySQL主从复制读写分离搭建
  • 详解如何利用docker快速构建MySQL主从复制环境
  • 简单谈谈MySQL的半同步复制
  • MySQL复制优点、原理详解

betway必威亚洲官网 6

    查看slave从机的状态

                master_password
实现复制的远程登录master的mysql的面,在步骤2有设置

    保存并退出my.cnf,启动mysqld

mysql> grant replication slave on *.* to 'backup'@'%' identified by '1234';
    mysql> use mysql
    mysql> select user,authentication_string,host from user;

                    master_log_pos=601;

         从master导出数据,然后导入到slave中

CentOS6.7安装mysql5.7.18

  2、  mysql-5.7.18-linux-glibc2.5-i686文件夹重命名为mysql  

  5、关闭掉主数据库的读取锁定       

betway必威亚洲官网 7    

    出现如下信息表示启动成功

betway必威亚洲官网 8 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

标签:

相关文章

网站地图xml地图