在網站中有相同的banner,版權等等頁面,咱們能夠將相同的頁面作成包含文件,在展現的頁面中包含便可。php
包含文件至關於將文件的內容複製到頁面中,若是包含文件有 頁面結構(),包含後,頁面中就不止一個頁面結構了。這與W3C定義的規範不符合,因此在包含文件中不能出現頁面的結構。css
相對路徑比較簡潔,但可能因爲頁面之間屢次相互包含,地址所以會出現問題。這種狀況下,建議使用絕對路徑。
複製代碼
//相對路徑
<img src="img.png" />
<img src="./img.png" />
<img src="../img.png" />
//絕對路徑
<img src="c:\htdocs\img.png" />
<img src="/images/img.png" />
複製代碼
echo 'include'.'<br>';//能夠包含屢次
include 'head.html';
echo 'require'.'<br>';//能夠包含屢次
require 'head.html';
echo 'include_once'.'<br>';//只能包含一次
include_once 'head.html';
echo 'require_once'.'<br>';//只能包含一次
require_once 'head.html';
複製代碼
++包含文件若是是html頁面,在包含文件中有PHP代碼,包含文件中的PHP代碼是能夠被解析的++html
思考:在項目中咱們是選用require(include)仍是選擇require_once (include_once)?
答:選擇require(include),require_once()在包含以前先要判斷一下此文件是否被包含,若是沒有包含則包含,不然不包含,在效率上顯然沒有requrie高。
複製代碼
包含文件至關於拷貝包含文件的代碼複製主文件中,魔術常量除外,魔術常量取的是魔術常量所在文件的信息。數據庫
echo __FILE__,'<br>';
echo __LINE__,'<br>';
index.php>head.html
F:\ServerPHP\www\index.php
20
F:\ServerPHP\www\head.html
4
複製代碼
這兩種寫法的效果基本是同樣的,不帶./的路徑受到include_path配置的影響數組
header 1 | header 2 | header 2 ---|--- include_path | .;C:\php\pear | .;C:\php\pear安全
能夠經過set_include_path()來設置包含文件所在的目錄。bash
set_include_path('f:\wamp;'.get_include_path());
echo get_include_path(); //f:\wamp;.;c:\inc 包含多個目錄,從左向右查找文件
複製代碼
include 'main.html'; //包含的文件在include_path設置的文件夾中查找
複製代碼
set_include_path(); //設置包含文件的目錄
get_include_path(); //獲取包含文件的目錄
複製代碼
設置include_path的做用:函數
exit的die的別名,終止腳本執行,終止後能夠輸出一個字符串。 die('終止後輸出的字符串')優化
終止當前頁面的執行,不會終止包含頁面網站
return array(
'host' => '127.0.0.1',
'usename' => 'root',
'passwrod' => 'adminllj',
'port'=> '3306'
)
複製代碼
sleep(秒)
sleep(3);
echo '呵呵';
複製代碼
foreach是循環,break和continue也適用於foreach循環
$stu = array('a','b','c','d','e','f');
foreach($stu as $key=>$val){
if($key%2==0)
continue;
if($key==5)
break;
echo $key,'-',$val,'<br>';
}
//跳出%2 == 0 ==5終止
//1-b
//3-d
複製代碼
foreach值變量支持傳地址(鍵變量不支持傳地址) 傳值:
$stu = array('a','b','c','d','e','f');
foreach($stu as $key=>$val){
$val.=$val;
echo $val,'<br>';
}
var_dump($val);
// aa
// bb
// cc
// dd
// ee
// ff
// string(2) "ff"
複製代碼
//foreach循環的是數組的‘拷貝’
$stu = array('a','b','c','d','e','f');
foreach($stu as $key=>$val){
$stu[] = '李白';
}
var_dump($stu);
//array(12) { [0]=> string(1) "a" [1]=> string(1) "b" [2]=> string(1) "c" [3]=> string(1) "d" [4]=> string(1) "e" [5]=> string(1) "f" [6]=> string(6) "李白" [7]=> string(6) "李白" [8]=> string(6) "李白" [9]=> string(6) "李白" [10]=> string(6) "李白" [11]=> string(6) "李白" }
複製代碼
$stu = array('a','b','c');
foreach($stu as $key=>$val){
$stu[$key] = '你好'.$val;
$stu[]='李白';
}
print_r($stu);
//Array ( [0] => 你好a [1] => 你好b [2] => 你好c [3] => 李白 [4] => 李白 [5] => 李白 )
複製代碼
傳址:
$stu = array('a','b','c','d','e','f');
foreach($stu as $key=>&$val){
$val.=$val;
echo $val,'<br>';
}
var_dump($stu);
// aa
// bb
// cc
// dd
// ee
// ff
// array(6) { [0]=> string(2) "aa" [1]=> string(2) "bb" [2]=> string(2) "cc" [3]=> string(2) "dd" [4]=> string(2) "ee" [5]=> &string(2) "ff" }
複製代碼
$stu = array('a','b','c','d','e','f');
foreach($stu as $key=>&$val){
$stu[] = '李白';
echo $val,'<br>';
}
//死循環
複製代碼
簡單示例
$stu = array('a','b','c');
echo key($stu),'-',current($stu),'<br>'; //獲取當前鍵-返回當前值 //0-a
next($stu); //指針下移
echo key($stu),'-',current($stu),'<br>'; //1-b
next($stu);
echo key($stu),'-',current($stu),'<br>'; //2-c
next($stu);
//這裏到盡頭了
var_dump(key($stu)); //返回null
複製代碼
循環指針
$stu = array('a','b','c');
while(key($stu)!==NULL){
echo key($stu),'-',current($stu),'<br>';
next($stu);
}
// 0-a
// 1-b
// 2-c
複製代碼
倒序循環指針
$stu = array('a','b','c');
end($stu);//先把指針指向最後一個元素
while(key($stu)!==NULL){
echo key($stu),'-',current($stu),'<br>';
prev($stu);//指針倒回一位
}
// 2-c
// 1-b
// 0-a
複製代碼
經過 while+each 遍歷數組
$stu = array('a','b','c','e');
while($s = each($stu)){
//echo $s[0],'-',$s[1],'<br>';
// 0-a
// 1-b
// 2-c
// 3-e
echo $s['key'],'-',$s['value'],'<br>';
// 0-a
// 1-b
// 2-c
// 3-e
}
reset($stu); //復位
while($s = each($stu)){
//echo $s[0],'-',$s[1],'<br>';
// 0-a
// 1-b
// 2-c
// 3-e
echo $s['key'],'-',$s['value'],'<br>';
// 0-a
// 1-b
// 2-c
// 3-e
}
// 0-a
// 1-b
// 2-c
// 3-e
// 0-a
// 1-b
// 2-c
// 3-e
複製代碼
把索引數組中的值賦給一些變量
流量:只能是索引數組,不能是關聯數組
$stu = array('a','b');
list($stu1,$stu2) = $stu;
echo $stu1,'<br>'; //a
echo $stu2,'<br>'; //b
複製代碼
9.each()+while()+list()
$stu = array('a','b','c','d');
while($s=each($stu)){
list($key,$value)=$s;
echo $key,'-',$value,'<br>';
}
// 0-a
// 1-b
// 2-c
// 3-d
複製代碼
10.數組在複製指針的時候指針的處理
在數組複製的時候,若是指針合法,指針是一塊兒複製的。
$stu1 = array('a','b','c','d');
next($stu1);
next($stu1);
$stu2 = $stu1;
echo current($stu2),'<br>'; //c
echo current($stu1),'<br>'; //c
//說明數組複製是把指針一塊兒複製
複製代碼
若是指針不合法,新數組指針會被從新初始化。==新數組就是先使用的數組。==
$stu1 = array('a','b','c','d');
end($stu1);
next($stu1);
$stu2 = $stu1;
echo 'stu2指針'.current($stu2),'<br>'; //stu2指針a
echo 'stu1指針'.current($stu1),'<br>'; //stu2指針
複製代碼
11.COW(寫時複製)
echo '當前內存量:'.memory_get_usage(),'<br>'; //返回分配給PHP的內存量 124512
$array1 = range(0,100000);
echo '當前內存量:'.memory_get_usage(),'<br>'; //990320
$array2 = $array1; //複製操做後內存沒有明顯變化
echo '當前內存量:'.memory_get_usage(),'<br>'; //990376
$array1[0]='a'; //寫操做後內存明顯變大
echo '當前內存量:'.memory_get_usage(),'<br>'; //1536112
複製代碼
$stu=array('tom','berry','ketty','rose');
foreach($stu as $key=>$val) {
$stu[4]='李白';
}
var_dump(current($stu)); //string(5) "berry"
//說明:foreach在第一循環時候,指針下移,指針指向berry,而後執行寫操做,此時分配內存,因爲指針合法,全部連同指針一塊兒複製。因此輸出berry.
複製代碼
12.打印楊輝三角
1<style type="text/css">
2 span{
3 width:45px;
4 height:20px;
5 display:inline-block;
6 }
7</style>
8<?php
9//打印楊輝三角
10function yanhui($lines=10) {
11 for($rows=1; $rows<=$lines; $rows++) {
12 for($cols=1; $cols<=$rows; $cols++) {
13 if($cols==1 || $cols==$rows)
14 $num[$rows][$cols]=1;
15 else {
16 $num[$rows][$cols]=$num[$rows-1][$cols]+$num[$rows-1][$cols-1];
17 }
18 echo '<span>'.$num[$rows][$cols].'</span>';
19 }
20 echo '<br>';
21 }
22}
23yanhui();
複製代碼