‘壹’ php:编写程序计算从当前时间距离2020年元旦还有多少天
$date_diff = date_diff(new DateTime(),new DateTime('2020-1-1'));
//object(DateInterval)#3 (8) { ["y"]=> int(6) ["m"]=> int(11) ["d"]=> int(23) ["h"]=> int(9) ["i"]=> int(44) ["s"]=> int(4) ["invert"]=> int(0) ["days"]=> int(2548) }
echo $date_diff->days; //2548
‘贰’ php如何判断一个变量是DateTime Object类型
PHP没有你说的这个类型哦。如果要查看一个对象类型的类名称,可以这样:
echo
get_class
($a);
PHP
支持8种基本的数据类型。
四种标量类型:
boolean
(布尔型)
integer
(整型)
float
(浮点型,
也称作
double)
string
(字符串)
两种复合类型:
array
(数组)
object
(对象)
最后是两种特殊类型:
resource(资源)
NULL(NULL)
‘叁’ Php7有哪些新特性
PHP 7.4 的主要特性包括以下几个,
短闭包函数(short closure) 预加载提交性能 属性类型限定 Improved type variance(不会翻译) 三元运算简写 数组展开运算 新增类的魔术方法:serialization 数字分隔符 运算优先顺序 允许在__toString中抛出异常 支持反射引用 新增字节分割函数 移除php短标签 弃用左关联运算符 不再向后兼容的变更 短闭包函数短闭包函数可以减少冗余代码:
array_map(function (User $user) { return $user->id; }, $users) array_map(fn(User $user) => $user->id, $users)需要注意几点:
短闭包可以直接访问闭包函数外面的变量,所以不需要再写?use?关键词 以fn关键词开始 $this?可以像普通的闭包一样使用 短闭包只有一行代码,仅仅做返回声明使用,不允许使用return?关键词还可以使用更严格类型的方式
$ids = array_map(fn(User $user): int => $user->id, $user); 预加载PHP预加载可以极大的提高性能
优点:在PHP 7.4以前,如果你使用了框架来开发,每次请求文件就必须加载和重新编译。预加载在框架启动时在内存中加载文件,而且在后续请求中永久有效。
缺点:性能的提升会在其他方面花费很大的代价,每次预加载的文件发生改变时,框架需要重新启动。
属性类型限定 class A { public string $name; public Foo $foo; }不得不说,PHP越来越接近Java等强类型语言
Improved type variance协变返回类型:
class ParentType {} class ChildType extends ParentType {} class A { public function covariantReturnTypes(): ParentType { /* … */ } } class B extends A { public function covariantReturnTypes(): ChildType { /* … */ } }依赖(是不是很熟悉):
class ParentType {} class ChildType extends ParentType {} class A { public function covariantReturnTypes(): ParentType { /* … */ } } class B extends A { public function covariantReturnTypes(): ChildType { /* … */ } } 简写三元运算符在目前> PHP 7以后的写法:
$data['date'] = $data['date'] ?? new DateTime(); 在PHP 7.4你可以这样写: $data['date'] ??= new DateTime(); 数组展开运算合并数组到另一个数组中,返回一维数组
$arrayA = [1, 2, 3]; $arrayB = [4, 5]; $result = [0, ...$arrayA, ...$arrayB, 6 ,7]; // [0, 1, 2, 3, 4, 5, 6, 7]注意? :只对数字索引有效
新增类的魔术方法RFC添加了两个新的魔术方法__serialize和__unserialize
数字分隔符允许使用下划线更直观的分隔数值
$unformattedNumber = 107925284.88; $formattedNumber = 107_925_284.88; 运算优先顺序PHP 7.4之前,如果你这样写:
echo "sum: " . $a + $b; PHP会解析为: echo ("sum: " . $a) + $b; PHP 8将会解析为: echo "sum :" . ($a + $b); __toString中抛出异常支持反射引用PHP 7.4将会新增ReflectionReference?类
移除php短标签<?将会在PHP 8中移除,<?=会继续保留
弃用左关联运算符PHP遗留了一些奇怪的怪癖,比如
1 ? 2 : 3 ? 4 : 5; // 将会在 PHP 7.4 中废弃,在 PHP 8中会抛出编译错误 (1 ? 2 : 3) ? 4 : 5; // 正确 不再向后兼容的变更 弃用在没有父类的情况下调用parent:: 调用var_mp打印DateTime和DateTimeImmutableshi’实例,将不再保留对象上的可访问属性 openssl_random_pseudo_bytes?会在调用错误时抛出异常 序列化PDO和PDOStatement?实例将会生成一个Exception而不是PDOException异常 调用get_object_vars()打印ArrayObject?实例将会返回ArrayObject?自己的属性,而不是被包裹的数组或对象的值,数组强制转换不受影响
‘肆’ PVOID是什么数据类型呢,不太明白,请高手指点!!
小胖
回来查查MSDN
这是我从网上搜的
PVIOD 一个普通指针类型等价于(viod *)
还有一些对你有用
win api 编程中的数据类型很多,有没有人能 具体讲讲啊?
CALLBACK 在应用程序的回调例程中取代FAR PASCAL
HANDLE 一个32位的无符号整数,用作句柄
HDC 设备描述句柄
HWND 一个32位的无符号整数用作窗口句柄
LONG 一个32位的带符号整数
LPARAM 用于声明lParam的类型
LPCSTR 与LPSTR类似,但用于只读字符串指针
LPSTR 一个32位的指针
LPVIOD 一个普通指针类型等价于(viod *)
LRESULT 子窗口过程的返回值
NULL 一个整型的0值,常常用于激活函数的缺省动作和参数
UINT 一种无符号的整数类型,其大小取决于主机环境;在NT下是32位
WCHAR 一种16位的UNICODE字符,用于表示世界上所有语言的符号。
WINAPI 在API的定义中取代FAR PASCAL
WPARAM 关于wParam的声明
‘伍’ php如何判断一个变量是DateTime Object类型
PHP没有你说的这个类型哦。如果要查看一个对象类型的类名称,可以这样:
echo get_class ($a);
PHP 支持8种基本的数据类型。
四种标量类型:
boolean (布尔型)
integer (整型)
float (浮点型, 也称作 double)
string (字符串)
两种复合类型:
array (数组)
object (对象)
最后是两种特殊类型:
resource(资源)
NULL(NULL)
‘陆’ object of class datetime could not be converted to string in 在php 读取sql数据库的内容时。
很明显, 数据库中字段是 datetime 格式, 你没转换就直接当做 string 使用就报这个错误, 你需要从Sql数据读取数据, 然后将datetime 字段转为 字符串。
‘柒’ 如何使用PHP向数据库中插入图片,,并且使得图片可以显示在页面上
一般不向数据库插入图片 而是插入图片的src 通过src找到图片然后显示。
<?php
session_start();
//array数组中放图片的格式
$uptypes = array("image/jpg","image/jpeg","image/png","image/pjpeg","image/gif","image/bmp","image/x-png");
$files =$_FILES["uppic"];
if($files["size"]>2097152){ //图片大小判断
echo "上传图片不能大于2M";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=pic.php'>";
exit;
}
$ftype =$files["type"];
if(!in_array($ftype,$uptypes)){ //图片格式判断
echo "上传的图片文件格式不正确";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=pic.php'>";
}
$fname = $files["tmp_name"]; //在服务器临时存储名称
$image_info = getimagesize($fname);
$name = $files["name"];
$str_name = pathinfo($name); //以数组的形式返回文件路劲的信息
$extname = strtolower($str_name["extension"]); //把字符串改为小写 extensiorn扩展名
$upload_dir = "upload/"; //upload文件夹
$file_name = date("YmdHis").rand(1000,9999).".".$extname;
$str_file = $upload_dir.$file_name; //文件目录
//存入数据库
$con=mysql_connect("localhost","root","");
if(!$con){
die(("数据库连接失败").mysql_error());
}
mysql_select_db("mywork",$con);
$sql="update user set picpath='$str_file' where user_name='$username'"; //将图片地址插入数据库mywork
mysql_query($sql,$con);
mysql_close($con);
if(!file_exists($upload_dir)){
mkdir($upload_dir); //创建目录 成功则返回true 失败则返回flase
}
if(!move_uploaded_file($files["tmp_name"],$str_file)){ //将上传的文件移动到新的目录 要移动文件 和文件新目录 成功则返回true
echo "图片上传失败";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=插入失败后希望跳转的页面>";
}
else{
//echo "<img src=".$str_file.">";
echo "图片上传成功";
echo "<meta http-equiv='REFRESH' CONTENT='1;URL=插入成功希望挑战的页面>";
}