php是弱类型语言,所以 1==‘1’ 而 1==='1' 则不成立
empty判断变量的值是1还是0 isset判断变量是否赋值,赋值了为1(0也是赋了值),没赋值(或者赋值为null,或者只声明了)为0,
is_null判断变量值是否为null,null为1,不是null为0 (变量赋值为null或只声明的情况下,变量值才为null,其它情况都不是null,0也不是null)
php数组删除值,array_unset(); 不会删除键。
删除数组空值
$array1
=
array
(
' '
,1,
''
,2,3);
print_r(
array_filter
(
$array1
,
"del"
));
function
del(
$var
)
{
return
(trim(
$var
));
}
array_values(rsort(array_unique(array_filter($arr))))
如何获取客户端的IP地址?
$_SERVER
[‘REMOTE_ADDR’]
查看数据类型 gettype()输出方式:echo var_dump(本身包含数据类型)
$db = new mysqli("localhost","root","","myblog");
$charset=mysqli_character_set_name($db); //返回数据库默认字符集的编码utf8
echo "默认字符集为: " . $charset;
fetch_array和fetch_row有点区别:fetch_array返回的数组下标不仅有数组还有数据库的字段名,相当于返回两个数组。fetch_row返回只有下标是012345...的数组。它们两个都有一个向下移动的指针,每运行一次就向下移动,所以可以放在while中而不会无限循环。
$result =$con->query($sql); 当查询不存在时 result也是true。
M实例化参数是数据库的表名。D实例化的是你自己在Model文件夹下面建立的模型文件
include每次读取,而require只读取一次,所以经常变化的文件用include,执行多次的用require。加不加括号一样,但加括号慢。include包含一个不存在的文件会警告,程序可以运行,require包含不存在的文件,程序不会执行。
主键:唯一标示一条记录,不能重复不允许有空值。
外键:表的外键是另一个表的主键,外键可以重复,也可以为空。(学院表,学生表,学生表中的学院id可以是重复的,也可以空,表示不确定哪个学院)
索引:不能重复,可以为空。
主键用来保证数据完整性。外键用来和其他数据表建立联系。索引提高排序速度。主键只能有一个,外键可以多个,索引可以有多个。
M方法和D方法:M:实例化基础模型类,D:实例化自定义模型类,使用D方法若没有自定义模型则调用M方法,他们都是单利模型。
redis:
优势:所有数据都存储在内存中
我们在碰到需要执行耗时特别久,且结果不频繁变动的SQL,就特别适合将运行结果放入缓存,这样,后面的请求就去缓存中读取,请求使得能够迅速响应。
在大并发的情况下,所有的请求直接访问数据库,数据库会出现连接异常。这个时候,就需要使用的的Redis的做一个缓冲操作,让请求先访问到的Redis的的,而不是直接访问数据库。
劣势:不适合海量数据的操作,占用太大内存
phpstorm配置:
先不要配置interpreter。在deploment中添加in place,这样浏览器中不再出现很长的路径,代码放在www目录下。
laravel安装:
先安装composer。选择对应的php.exe 。很慢。打开cmd 使用composer有显示安装是否成功。
composer global require "laravel/installer" 同样很慢
安装 composer create-project --prefer-dist laravel/laravel=5.5. * laraveltest 同样很慢
浏览器访问server.php 出现laravel图标 安装成功。
在laraveltest目录中输入php artisan serve 这样在浏览器中通过 http://localhost:8000
即可访问应用。关闭cmd就访问不了了。
要想在laravel中进行测试,需要安装phpunit 才能用phpunit命令 安装挺简单的
访问laravel路由:正常访问laravel入口文件是这样的 http://localhost/laraveltest/public/
访问web下的hello路由 http://localhost/laraveltest/public/hello get可以url访问,post不行
路由参数($url,$callback); url为一个传入参数,例如get post等,然后返回 例如view,echo等等
路由转到控制器时,若控制器有构造函数,则先调用构造函数。
中间件为了过滤http的请求,例如是否登录,没有登录则重定向到登录界面。
控制器将http请求封装到一个类中进行处理。
view文件后缀该有blade ,blade是一个引擎,有输出功能。
composer创建控制器命令:php artisan make:controller MemberController
mvc: model逻辑模块,处理数据,和数据库接触多。vie视图,前端显示。control,路由到control/函数方法再调用模型。
compact创建一个变量名是键,变量值是值的数组。
DB类在/Illuminate/Support/Facades/DB目录下,而真正起作用的是/Illuminate/database的composer插件,里面的/Illuminate/Database/DatabaseManager类,具体的可用函数可以参考该类。
另外,DatabaseManager类中有很多方法是通过magic call实现的,具体的实现在 Connection 类中,select、table等sql关键字都在里面。
Laravel5.4及以上版本 默认使用 utf8mb4 字符,包括支持在数据库存储「表情」。如果你正在运行的 MySQL release 版本低于5.7.7 或 MariaDB release 版本低于10.2.2 ,为了MySQL为它们创建索引,你可能需要手动配置迁移生成的默认字符串长度,
这时候打开项目下的app\Providers\AppServiceProvider.php 文件
引入 use Illuminate\Support\Facades\Schema;
然后在 boot 方法添加一行代码
Schema::defaultStringLength(191);
重新执行迁移即可
tp框架url后面的路径:模块/控制器/操作 文件名和控制器首字母必须大写
http://localhost/thinkphp/public/index.php/test/test/hello