PHP个人微博网页代码,案例:PHP原生微博(Db类的完成 前端页面php代码完善)...

实例

// 用户

$user = $db->table('users')->where('id=1')->item();

运行实例 »

点击 "运行实例" 按钮查看在线实例

2、微博列表,通过查询uid来得出该id下的微博信息

实例

$weibo_list = $db->table('weibo')->where('uid=1')->order('id desc')->lists();

运行实例 »

点击 "运行实例" 按钮查看在线实例

3、在前端渲染微博列表时,除了需要weibo表里的信息,同时还需要发表该微博用户的信息(头像、用户名等等),这里就需要通过自定义索引user将该uid对应的id的用户信息作为值传给user索引

实例

foreach ($weibo_list as $key => $value) {

$weibo_list[$key]['user'] = $db->table('users')->where('id='.$value['uid'])->item();

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

4、上述方法可以实现功能,但是如果上线,作为企业及应用的话还存在问题,那就是如果微博多了以后,比如10000条,其实也不算多,那么这个循环就要执行10000次查询,对服务器负担太重,需要优化。

怎么优化?就是先在weibo表中循环,将所有的uid放在一个数组中,然后将这些uid的用户信息放在user_list中

实例

//uid集合

$uids = [];

foreach ($weibo_list as $k=>$val) {

if (!in_array($val['uid'], $uids)) {

$uids[] = $val['uid'];

}

}

//用户信息

$user_list = $db->table('users')->where('id in ('***plode(',', $uids).')')->cates('id');

运行实例 »

点击 "运行实例" 按钮查看在线实例

5、还可以进一步优化,可以将用户信息中的id放在user_list中的索引,这样就可以方便将微博的uid和用户的id一一对应,然后将用户信息放在weibo的自定义索引user中

实例

//自定义index

public function cates ($index) {

$lists = $this->lists();

//将用户id设为数组的key

$temp = [];

foreach ($lists as $k=>$val) {

$temp[$val[$index]] = $val;

}

$lists = $temp;

return $lists;

}

//weibo_list的uid和user_list里的id是一一对应的所以

foreach ($weibo_list as $key => $value) {

$weibo_list[$key]['user'] = $user_list[$value['uid']];

}

运行实例 »

点击 "运行实例" 按钮查看在线实例

三、总结至此原生微博的功能基本完成,剩下的连接池,服务器用配置文件加载,分页功能的实现,今后用到时在研究;

企业级的应用需要特别注意数据库的操作,不用jion连表操作,不存储过程。

最后总结学习的过程,还是很枯燥的,尤其是最近生活和工作中出现的一些不如意,打破了平静的心。平静不急躁不功利不强求不畏难的情绪是高效学习应有的情绪准备,这段时间没有。自己也在积极的收拾情绪,花了一些时间,或者说是时间的冲刷让一些心中的执念淡化了,就像之前的种种,我一旦放下,就会不再留恋,甚至有点绝情。现在应该向前看,用一个个目标的确立和实现,埋葬过去的不顺与抗争。当前已经确立了一个有清晰轮廓细节不细的目标,和行动路线。目标确定的同时要确定行动路线,哪怕这个路线很笼统,也要将目标和路线同时确立,这点很重要!!!至于路线如何清晰?还是那句话,边走边看,摸石头过河~!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值