PHP基本知识点

标签: Php 分类: 后台服务 创建时间:2020-03-18 04:51:46 更新时间:2023-10-20 11:23:26

PHP是世界上最好的语言,滑稽脸.jpg。写这篇,或者这一系列的文章,也不是为了啥,就是入门,能正常的使用和修改别人的代码就可以了。

1.PHP数组

(1) 头部添加元素

1
2
3
4
5
int array_push ( array &$array , mixed $var [, mixed $... ] )

## 例:
$array_push = array("c","b");//定义数组
array_push($array_push,"d");//添加元素

(2) 对象与数组的转换

2.创建JSON对象

3.查询

刚刚接手了一个小程序商城,后台是使用php写的,其实我从来没有系统的学习过thinkphp,只是遇到什么问题就查找什么问题,好尽快的解决问题。其实这样还是很浪费时间。
(1) 基础查询
如果你的所有查询都需要一个基础的查询范围,那么可以在模型类里面定义一个静态的base方法,也就是说,所有的查询后面都会加如这么一个条件,就是 status=1,例如:

1
2
3
4
5
6
7
8
9
10
11
12
namespace app\index\model;

use think\Model;

class User extends Model
{
// 定义全局的查询范围
protected function base($query)
{
$query->where('status',1);
}
}

(2) 闭包函数中查询
在闭包函数中进行查询,如果需要使用函数外部的遍历,就需要使用 use 进行声明

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public static function getAllLogistics($region)
{
$values='';

$data=self::scope(function ($query) use ($values,$region){
$values.=$region;
$query->where('shortname','=',$region);
})->select();
// 遍历查询
foreach($data as $key=>$val)
{
$values.=$key.':'.$val.' ';
if(strpos($key,'_code')){
$values.=$key.":".$val;
}
}



return $values;

}

4.遍历对象属性

从数据库中查询到一个对象,然后想遍历它的属性,使用 foreach($item as $key=>$val) 总是会出现错误,报non-numeric等错误。主要原因是使用foreach遍历时,还有其他的一些多余的属性会出现。 目前的方式就是先用json_decode 加上第二个参数true,将对象转换为数组形式,然后进行遍历。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$values='';
$data=self::scope(function ($query) use ($values,$region){
$query->where('shortname','=',$region);
})->select();

$length=count($data);
if($length>0){
for($i=0;$i<$length;$i++){
$item=$data[$i];
$item=json_decode($item,true);
foreach($item as $key=>$val)
{
$values.=$key.':'.$val.' ';
}
}
}

5.查询数据库,遍历所有记录

(1) 使用get方法返回的是一个单一对象,可以调用toArray()方法,将其转换为数组,然后进行遍历。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php

namespace app\common\model;

/**
* 客服模型类
* Class UserService
* @package app\common\model
*/
class UserService extends BaseModel
{
protected $name = 'user_service';
/**
* 获取用户列表
*/
public function getList(){

$filter = ['is_delete' => 0];
return self::get($filter);
}

}

(2) 使用select() 返回的是一个数据集

1
$this->where('is_delete','=',0)->select();

(4) 修改

1
2
3
4
5
6
/**
* 更新用户信息
*/
public function updateStatus($openid,$status){
return $this->where('open_id','=',$openid)->update(['status'=>$status]);
}
参考文章:
1.修改器
小额赞助
本人提供免费与付费咨询服务,感谢您的支持!赞助请发邮件通知,方便公布您的善意!
**光 3.01 元
Sun 3.00 元
bibichuan 3.00 元
微信公众号
广告位
诚心邀请广大金主爸爸洽谈合作
每日一省
isNaN 和 Number.isNaN 函数的区别?

1.函数 isNaN 接收参数后,会尝试将这个参数转换为数值,任何不能被转换为数值的的值都会返回 true,因此非数字值传入也会返回 true ,会影响 NaN 的判断。

2.函数 Number.isNaN 会首先判断传入参数是否为数字,如果是数字再继续判断是否为 NaN ,不会进行数据类型的转换,这种方法对于 NaN 的判断更为准确。

每日二省
为什么0.1+0.2 ! == 0.3,如何让其相等?

一个直接的解决方法就是设置一个误差范围,通常称为“机器精度”。对JavaScript来说,这个值通常为2-52,在ES6中,提供了Number.EPSILON属性,而它的值就是2-52,只要判断0.1+0.2-0.3是否小于Number.EPSILON,如果小于,就可以判断为0.1+0.2 ===0.3。

每日三省
== 操作符的强制类型转换规则?

1.首先会判断两者类型是否**相同,**相同的话就比较两者的大小。

2.类型不相同的话,就会进行类型转换。

3.会先判断是否在对比 null 和 undefined,是的话就会返回 true。

4.判断两者类型是否为 string 和 number,是的话就会将字符串转换为 number。

5.判断其中一方是否为 boolean,是的话就会把 boolean 转为 number 再进行判断。

6.判断其中一方是否为 object 且另一方为 string、number 或者 symbol,是的话就会把 object 转为原始类型再进行判断。

每日英语
Happiness is time precipitation, smile is the lonely sad.
幸福是年华的沉淀,微笑是寂寞的悲伤。