『壹』 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=插入成功希望挑戰的頁面>";
}