現(xiàn)在想想 感覺已經(jīng)快把php拋棄了~太久不敲代碼,手是真的生了庇谆,以前雖然學(xué)了不少赁遗,但是基本上已經(jīng)還給老師了,正好為滲透鞏固下基礎(chǔ)族铆,再來學(xué)一遍岩四!
挑選自己不會的記錄下來~
php內(nèi)置常量
<?php
echo(__FILE__); //文件的路徑以及路徑名字
echo"</br>";
echo(__FUNCTION__);//返回函數(shù)定義時候的名字
echo"</br>";
echo(__DIR__);
echo"</br>";
echo(PHP_OS);//操作系統(tǒng)類型
echo"</br>";
echo(PHP_VERSION);//php的版本
?>
php全局變量
<?php
$room=20;
function getRoom(){
echo $room."這是函數(shù)內(nèi)部";
}
echo $room."這是代碼間訪問";
?>
28bb062b36c03af8.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
如果想要在函數(shù)體內(nèi)部輸出
第一種方法:
<?php
$room = 20;
function getRoom(){
global $room;
echo $room ."這是函數(shù)內(nèi)部";
}
getRoom();
echo "</br>";
echo $room."這是代碼間訪問";
?>
第二種方法:
<?php
$room = 20;
function getRoom(){
$room = $GLOBALS['room'];
echo $room ."這是函數(shù)內(nèi)部";
}
getRoom();
echo "</br>";
echo $room."這是代碼間訪問";
?>
變量的銷毀
如果是全局變量則不會被銷毀,如果是局部變量則會被銷毀哥攘。
<?php
function getRoom(){
global $a; //全局變量
unset($a);
}
$a = 20;
getRoom();
echo "</br>";
echo $a;
?>
//局部變量
<?php
function getRoom(){
$a = 20; //局部變量
unset($a);
echo $a;
}
getRoom();
echo "</br>";
echo $a;
?>
單引號 與雙引號的區(qū)別
<?php
$a = 20;
echo '$a';
echo "</br>";
echo "$a";
?>
計算字符串的長度
<?php
$people = "123456789 qwe";
echo strlen($people);
?>
統(tǒng)計字符串中單詞的個數(shù)
<?php
$people = "123456789 this is a people.";
echo str_word_count($people);
?>
清理字符串中的空格
<?php
$people = " 123456789 this is a people. ";
echo ltrim($people)."end";//清理左側(cè)空格
echo "</br>";
echo rtrim($people)."end";//清理右側(cè)空格
echo "</br>";
echo trim($people)."end";//清理兩側(cè)的空格
?>
字符串的切分與組合
<?php
$a = "1 2 3 4 5 6";
$b = "1-2-3-4-5-6";
$c = explode(' ',$a);
$d = explode('-',$b);
echo implode('*',$c);
echo implode('@',$d);
?>
字符串轉(zhuǎn)換大小寫
<?php
$a = "hello i miss you";
echo strtolower($a)."</br>";//轉(zhuǎn)換為小寫
echo strtoupper($a)."</br>";//轉(zhuǎn)換為大寫
echo ucfirst($a)."</br>";//整個字符串首字母大寫
echo ucwords($a)."</br>";//整個字符穿中 帶空格為分隔符的首字母大寫
?>
數(shù)組遍歷
<?php
$prices_per_day = array('單床房'=> 298,'標(biāo)準(zhǔn)間'=> 268,'三床房'=> 198,'VIP套房'=> 368);
foreach ($prices_per_day as $price){
echo $price."<br />";
}
foreach ($prices_per_day as $key => $value){
echo $key.":".$value." 每天剖煌。<br />";
}
reset($prices_per_day);
while ($element = each($prices_per_day)){
echo $element['key']."\t";
echo $element['value'];
echo "<br />";
}
reset($prices_per_day);
while (list($type, $price) = each($prices_per_day)){
echo "$type - $price<br />";
}
?>
遍歷多維數(shù)組
<?php
$roomtypes = array( array( 'type'=>'單床房',
'info'=>'此房間為單人單間。',
'price_per_day'=>298
),
array( 'type'=>'標(biāo)準(zhǔn)間',
'info'=>'此房間為兩床標(biāo)準(zhǔn)配置逝淹。',
'price_per_day'=>268
),
array( 'type'=>'三床房',
'info'=>'此房間備有三張床',
'price_per_day'=>198
),
array( 'type'=>'VIP套房',
'info'=>'此房間為VIP兩間內(nèi)外套房',
'price_per_day'=>368
)
);
for ($row = 0; $row < 4; $row++){
while (list($key, $value ) = each( $roomtypes[$row])){
echo "$key:$value"."\t |";
}
echo '<br />';
}
?>
字符串與數(shù)組的轉(zhuǎn)換
<?php
$prices_per_day = array('單床房'=> 298,'標(biāo)準(zhǔn)間'=> 268,'三床房'=> 198,'VIP套房'=> 368);
echo implode('元每天/ ',$prices_per_day).'<br />';
$roomtypes ='單床房,標(biāo)準(zhǔn)間,三床房,VIP套房';
print_r(explode(',',$roomtypes));
?>
數(shù)組 添加刪除元素
<?php
$clients = array('李麗麗','趙大勇','方芳芳');
array_unshift($clients, '王小明','劉小帥'); //頭部添加
print_r($clients);
?>
<?php
$clients = array('李麗麗','趙大勇','方芳芳'); //尾部添加
array_push($clients, '王小明','劉小帥');
print_r($clients);
?>
<?php
$serivces = array('洗衣','訂餐','導(dǎo)游','翻譯');
$deletedserivces = array_shift($serivces); //刪除第一個元素
echo $deletedserivces."<br />";
print_r($serivces);
?>
<?php
$serivces = array('s1'=>'洗衣','s2'=>'訂餐','s3'=>'導(dǎo)游','s4'=>'翻譯');
$deletedserivces = array_pop($serivces); //刪除最后一個元素
echo $deletedserivces."<br />";
print_r($serivces);
?>
查詢數(shù)組中的指定元素
<?php
$roomtypes = array( '單床房','標(biāo)準(zhǔn)間','三床房','VIP套房');
$prices_per_day = array('單床房'=> 298,'標(biāo)準(zhǔn)間'=> 268,'三床房'=> 198,'VIP套房'=> 368);
if(in_array( '單床房',$roomtypes)){echo '單床房元素在數(shù)組$roomtypes中耕姊。<br />';}
if(array_key_exists( '單床房',$prices_per_day)){echo '鍵名為單床房的元素在數(shù)組$prices_per_day中。<br />';}
if(array_search( 268,$prices_per_day)){echo '值為268的元素在數(shù)組$prices_per_day中栅葡。<br />';}
$prices_per_day_keys = array_keys($prices_per_day);
print_r($prices_per_day_keys);
$prices_per_day_values = array_values($prices_per_day);
print_r($prices_per_day_values);
?>
刪除數(shù)組中的重復(fù)元素
<?php
$prices_per_day = array('單床房'=> 298,'標(biāo)準(zhǔn)間'=> 268,'三床房'=> 198,'四床房'=> 198,'VIP套房'=> 368);
$prices_per_day2 = array('單床房'=> 298,'標(biāo)準(zhǔn)間'=> 268,'四床房'=> 198,'三床房'=> 198,'VIP套房'=> 368);
print_r(array_unique($prices_per_day));
print_r(array_unique($prices_per_day2));
?>
數(shù)組的序列化與反序列化
<?php
$arr = array('王小明','李麗麗','方芳芳','劉小帥','張大勇','張明明');
$str = serialize($arr);
echo $str."<br /><br />";
$new_arr = unserialize($str);
print_r($new_arr);
?>
php操作文件讀取
<?php
//php的文件操作
//1.定位文件的路徑(完全路徑)
$file_full_path = 'f:/1.txt';
//2.判斷文件是否存在
if (file_exists($file_full_path)){
//3.打開文件
//fopen是打開文件的函數(shù)茉兰,獲取到文件的指針資源
$fp = fopen($file_full_path, 'r');
echo "<pre>";
//var_dump($fp);
//4.獲取文件的大小
$fileinfo_arr = fstat($fp);
//var_dump($fileinfo_arr);
//輸出文件的信息
date_default_timezone_set('PRC'); //設(shè)置時區(qū)
echo '<br> 文件大小是:' . $fileinfo_arr['size'];
echo '<br> 文件的創(chuàng)建時間:' . date('Y-m-d H:i:s',$fileinfo_arr['ctime']);
echo '<br> 文件的修改時間:' . date('Y-m-d H:i:s',$fileinfo_arr['mtime']);
echo '<br> 文件的訪問時間:' . date('Y-m-d H:i:s',$fileinfo_arr['atime']);
}else {
echo "不存在,請檢查路徑";
}
//大文件適合用這種
<?php
$file_path = 'f:/1.txt';
if (file_exists($file_path)){
$fp = fopen($file_path, 'r');
//設(shè)置緩沖
$buffer='';
$buffer_size = 1024;
$con_str = '';
//開始一次讀取 buffer_size 循環(huán)讀取
//欣簇!feof($fp)如果沒有到結(jié)束 就繼續(xù)讀裙媪场坯约!
while (!feof($fp)){
$buffer = fread($fp, $buffer_size);
$con_str .=$buffer;
}
//關(guān)閉文件
fclose($fp);
//替換換行
$con_str = str_replace("\r\n",'<br>', $con_str);
$con_str = str_replace("\n",'<br>', $con_str);
echo $con_str;
}else {
echo '<br>. 該文件不存在!';
}
file_get_contents()
//適合使用小文件的 10M 大小之內(nèi)莫鸭!
<?php
//使用最多的第三種方式
//簡潔方式
$file_path = 'f:/1.txt';
if (file_exists($file_path)){
$con_str = file_get_contents($file_path);
$con_str = str_replace("\n\r", '<br>', $con_str);
$con_str = str_replace("\n", '<br>', $con_str);
echo $con_str;
}else {
echo "文件不存在";
}
<?php
// 定義配置文件 讀取文件
//路徑
$file_path = 'config.ini';
$arr_ini = parse_ini_file($file_path);
echo "<pre>";
var_dump($arr_ini);
echo '<br> user = ' . $arr_ini['user'];
echo '<br> pwd = ' . $arr_ini['pwd'];
php操作文件寫入
<?php
$file_path = 'f:/hello word.txt';
if (!file_exists($file_path)){
//創(chuàng)建并寫入
$fp = fopen($file_path, 'w');
$con = '';
for ($i=0;$i<10;$i++){
$con .= "hello world \r\n";
}
fwrite($fp, $con);
fclose($fp);
}else {
echo "<br>"."文件已經(jīng)存在闹丐,失敗";
}
<?php
//如果文件不存在,創(chuàng)建一個新文件被因,寫入10句話 123 如果已經(jīng)存在則寫入 10句話 456卿拴!
$file_path = 'f:/hello word.txt';
if (!file_exists($file_path)){
$con = '';
for ($i = 0;$i<10;$i++){
$con .= "123 \r\n";
}
// file_put_contents
//如果文件不存在 先創(chuàng)建 再添加
//如果文件存在 會覆蓋
file_put_contents($file_path, $con);
}else {
$con = '';
for ($i = 0;$i<10;$i++){
$con .= "456 \r\n";
}
file_put_contents($file_path, $con);
}
<?php
//如果文件不存在,創(chuàng)建一個新文件梨与,寫入10句話 123 如果已經(jīng)存在則寫入 10句話 456堕花!
$file_path = 'f:/hello word.txt';
if (!file_exists($file_path)){
$con = '';
for ($i = 0;$i<10;$i++){
$con .= "123 \r\n";
}
// file_put_contents
//如果文件不存在 先創(chuàng)建 再添加
//如果文件存在 會覆蓋
file_put_contents($file_path, $con);
// file_put_contents
//如果文件存在 會覆蓋 file_put_contents($file_path, $con);
//如果文件存在,希望追加寫 需要這樣:file_put_contents($file_path, $con, FILE_APPEND);
}else {
$con = '';
for ($i = 0;$i<10;$i++){
$con .= "456 \r\n";
}
file_put_contents($file_path, $con, FILE_APPEND);
}
php操作文件 刪除文件
<?php
//刪除文件
$file_path = 'f:/hello word.txt';
if(file_exists($file_path)){
//如果存在則刪除
if (unlink($file_path)){
echo '<br> 刪除陳工';
}
else {
echo '<br> 刪除失敗';
}
}else {
//如果不存在粥鞋,則不做操作
echo '<br> 該文件已經(jīng)刪除';
}
php操作文件 修改文件名字
<?php
//修改文件
$file_path = 'f:/hello word.txt';
$file_new_path = 'f:/123.txt';
//$file_new_path = 'f:/一二三.txt';
//如果是中文航徙,用iconv進(jìn)行編碼
//iconv('utf-8', 'gbk', $file_new_path);
if(file_exists($file_path)){
//如果存在則刪除
if (rename($file_path, $file_new_path)){
echo '<br>修改成功';
}else {
echo '<br>修改失敗.';
}
}else {
//如果不存在,則不做操作
echo '<br> 該文件不存在';
}
php操作文件目錄
//創(chuàng)建文件目錄
<?php
$file_path = 'f:/123';
if (!is_dir($file_path)){
if (mkdir($file_path)){
echo '<br> 成功';
}
else {
echo '<br> 失敗';
}
}
創(chuàng)建多級目錄
<?php
$file_path = 'f:/123/aaa/bbb';
if (!is_dir($file_path)){
//創(chuàng)建多級目錄
//0777 在 windows下被忽略 true 代表可以船艦多級目錄
if (mkdir($file_path,0777,true)){
echo '<br> 成功';
}
else {
echo '<br> 失敗';
}
}
刪除單級目錄
<?php
$file_path = 'f:/123';
if (is_dir($file_path)){
//刪除單級目錄
if (rmdir($file_path)){
echo '<br> 成功';
}
else {
echo '<br> 失敗';
}
}
封裝文件上傳類
<?php
class Upload
{
//定義成員屬性
private $upload_path = 'upload/'; //上傳文件保存的路徑
private $maxsize = 1024000;
//允許上傳的文件的最大限制
private $prefix = 'tn_'; //文件名的前綴
//允許上傳的文件類型
private $allow_type = array('image/jpeg','image/jpg','image/png','image/gif');
//提供修改陷虎、讀取的方法:set get
public function __set($p,$v)
{
if(property_exists($this, $p)){
$this->$p = $v;
}
}
public function __get($p)
{
return $this->$p;
}
//功能到踏,方法,具體實現(xiàn)文件上傳的方法
public function doUpload($file)
{
// sleep(5);
//將臨時文件移動到服務(wù)器的目錄中
//參數(shù)1:臨時的文件名
//參數(shù)2:目的地文件名
//上傳成功返回true尚猿,失敗返回false
$destination = $this->upload_path;
//1. 限制上傳文件的大小
$maxsize = $this->maxsize; //200KB
if($file['size'] > $maxsize){
echo '圖片太大了窝稿,服務(wù)器撐不下';
exit;
}
//2. 防止文件重復(fù)
//首先生成一個唯一的隨機(jī)數(shù)作為文件的名字
//參數(shù)1:前綴
//參數(shù)2:布爾值,如果true化凿掂,更具有唯一性
$filename = uniqid($this->prefix,true);
//確定文件的后綴
//strrchr()用來獲得一個字符串中最后一次出現(xiàn)的字符,返回從該字符之后的部分
//參數(shù)1:look needle from haystack,大海撈針
$ext = strrchr($file['name'], '.');
$new_filename = $filename.$ext;
//3. 分目錄存儲上傳的文件
//按照日期創(chuàng)建子目錄
date_default_timezone_set('PRC');
$sub_path = date('Ymd').'/';
//創(chuàng)建目錄,先判斷下 uploads/20170330是否存在伴榔,如果不存在則創(chuàng)建該目錄
if(!is_dir($destination.$sub_path)){
mkdir($destination.$sub_path,0777,true);
}
$destination .= $sub_path.$new_filename;
//4. 上傳的文件類型是否支持
$allow_type = $this->allow_type;
$true_type = $file['type'];
if(!in_array($true_type, $allow_type)){
echo '不支持該類型的文件';
exit;
}
//實例化finfo對象,用來獲得一個文件的真實的類型
/*
$finfo = new finfo(FILEINFO_MIME_TYPE);
$type = $finfo -> file($file['tmp_name']);
if(!in_array($type, $allow_type)){
echo '不支持該類型的文件';
exit;
}*/
if(move_uploaded_file($file['tmp_name'], $destination)){
//上傳成功之后,要把地址返回庄萎,而且將來這個地址還要保存到數(shù)據(jù)庫
//通常返回從日期開始的相對的路徑踪少,便于將來進(jìn)行拼接
return $sub_path.$new_filename;
}else{
return false;
}
}
}
cau'o'zuo
<?php
$_file = $_GET['file'];
if($_file == ''){
echo '<br> 找不到';
exit;
}
$full_name = 'img/'.$file;
$file_size = filesize($full_name);
iconv('utf-8', 'gbk', $full_name);
//順序不能亂
//高速瀏覽器回應(yīng)的文件是內(nèi)容注意保存
header("Content-Type: application/otect-stream");
//按照字節(jié)返回
header("Accept-Ranges: bytes");
//顯示文件大小
header("Content-length: $file_size");
//彈出對話框 ,對應(yīng)的文件名糠涛!
header("Content-Disposition: attachment; filename=".$_file);
$fp = fopen($full_name, 'r');
while(!feof($fp)){
$data = fread($fp, 1024);
echo $data;
}
fclose($fp);