一、布爾值:false(0,空白,null); true(-1,非0值);php
二、echo '$s'輸出內容是 $s;
若是""裏面包含了$s或者{$s},那麼將顯示的變量的值。推薦使用{$s}的方式。
使用""時候,若是在""裏面還要使用"",就必須用\來轉義,例如: echo "<font>\"sss\"</font>";html
三、字符串鏈接:使用標點"."進行字符串鏈接。java
四、訪問字符串中的字符:經過在字符串以後用花括號指定所要字符從零開始的偏移量來訪問。
strlen($str) 函數能夠獲取字符串長度。
$str[0] 獲取字符串$str的第一個字符。
substr('123456',5,1) 從第5個字符開始獲取一個字符,結果是「6」.
五、strval($s)將$s的值轉換成字符串,intval($s)將$s的值轉換成int整型數值。
雙引號裏面使用雙引號:" a\"b "=a"b ;mysql
六、數組: (array 括號,逗號,=>)
數組排序:sort($arr);
定義:$arr=array(1=>'11','foo'=>'fffooo', 'info'=>array(2=>22,'ghost'=>'host') );
引用:$arr[1] $arr['foo'] $arr['info'][2] $arr['info']['ghost']
count($arr) 獲取數組元素數量
遍歷數組:$arr=array(1=>'111',2=>'222',3=>'333');
foreach($arr as $k=>$v)
echo "{$k}_{$v}<br>"; //輸出:1_111 2_222 3_333ajax
七、對象sql
<?php
class foo
{
var $a='s';//類的變量!!數據庫
function init() //類的函數
{
echo "Doing foo.";
echo $this->a; //引用類的變量!!
}
}apache
$bar = new foo;
$bar->init();
?>
八、變量
isset($s)檢查變量是否已經設置,若是尚未設置就引用$s將致使php提示: Undefined variable。
默認狀況下變量之間賦值是不會互相影響的(傳值賦值模式);
若是是 $a="a"; $b=&$a 這種狀況下,$a和$b中任一個變量的值改動了,另一個變量的值也隨之變化(傳地址賦值模式)。
PHP5的預約義變量:
$_SERVER["REMOTE_ADDR"] //獲取ip地址
$_REQUEST[],$_GET[],$_POST[] //獲取提交的參數的值
$_SESSION[],$_COOKIE[]
$_FILE[]
$_ENV[]windows
九、常量
<?php
define("CONSTANT", "Hello world.");
echo CONSTANT; // outputs "Hello world."
?>數組
十、運算符號
/ 取商,結果爲float型,經過(int)($a/$b)獲得整型商
% 取餘,結果爲整型
== 是否恆等
!= <> 不等於
and && 與 or || 或 !非
round($a) 四捨五入取$a的值
floor($a) 捨去$a小數點後內容取整
ceil($a) 進一法取整,返回不小於$a的下一個整數
十一、流程控制
if() {do it}
elseif(){do it}
else {do it}
for($i=0;$i<$b;$++)
swtich($a){
case '1': do it;break;
case '2': do it;break;
default: do it;
}
十二、函數
function_exists(function name) 指定的函數是否存在;
函數內引用全局變量: global $a;
靜態變量:static $a只在函數內部編號;
function show()
{ static $a=0;$a++;echo $a;}
$a=10
show();
show();
echo $a
輸出結果:1,2,10
1三、類與對象
1四、圖像處理(須要GD庫支持)
檢查是否啓動了GD庫支持:if( function_exists(gd_info) )
gd_info()返回值是一個數組;
檢查GD庫版本:$ver=gd_info(); echo $k['GD Version'];
在x,y座標處新建圖像:$img=imagecrete(x,y)
爲圖像分配顏色:$color=imagecolorallocate($img,R,G,B)
發送圖片給瀏覽器;header("content-type;image/gif") 或者image/jgeg,image/png
顯示圖片;imagegif($img) imagejpeg($img) imagepng($img) imagewbmp($img)
釋放內存: imagedestroy($img)
顯示文字; imagestring($img,int font,x,y,$str,$color) 若是 font 是 1,2,3,4 或 5,則使用內置字體。
劃線:imageline($img,x1,y1,x2,y2,$color);
1五、SESSION
session_start() 創建會話
$_SESSION['var']='kkk' 創建var會話變量並賦值
session_unset() 註銷已註冊session變量
session_unregister('var') 註銷session變量var
PHP後退頁面過時或不存在問題的解決:
post後或使用了使用了session都有可能引發這種狀況
解決辦法,在開頭加入以下代碼便可:
header("Cache-control: private");
一、最好是用include_once()而不要用include()函數;
require_once()碰見錯誤則中止執行,include_once()提示後繼續執行;
二、empty($str)若是$str是0或者爲空都會返回true,因此$str最好不要有0
三、---------頁面轉向--------------------
"<scrīpt language=javascrīpt>alert('成功註銷會員')</scrīpt>
<meta http-equiv='refresh' content='0;url=searchMember.php'>";
固然header('location:URL')也能夠實現可是效果沒有上面的好!!
可是要特別注意:header這個函數所在的頁面上在調用此函數前,不能有任何輸出!!
-----------------------------
四、php代碼裏面嵌套html或者js代碼時候,最好用單引號而不要用雙引號!!
五、獲取頁面提交的參數:$_SERVER['REMOTE_ADDR'].$_SERVER[REQUEST_URI]
六、顯示本區時間:date_default_timezone_set('PRC');echo date("H:i:s");這樣纔是服務器的時間,若是不設置時區PHP5版本後顯示的時間就不是本地時間!!
date("Ymd His") 顯示年月日時分秒
十、細線表格設計:單元格間距=1;表格背景色=你想要看見最終顯示出來的表格邊框色;單元格背景色=白色或者很淺的色系。
豎線:表格列填充黑色,列寬度=1
字體:14像素+宋體 style="width:80"
十二、關於使用$_GET[]和$_POST[]獲取頁面變量:action='1.php?action=add'中應該用$_GET['action']來獲取action提交的值!!
處理radio單選組:因爲radio單選組的name都是同樣的,因此使用$_REQUEST["name"]就能夠獲取到單選的那個項的值value。
處理select下拉框(單選):因爲select單選組的name都是同樣的,因此使用$_REQUEST["name"]就能夠獲取到選擇的下拉項的值value。
處理select下拉框(多選):select下拉框命名必須爲name[]形式;
$arr=$_REQUEST["name"];
for($i=0;$i<count($arr);$i++)
echo "{$arr[$i]}";
處理checkbox多選組(多選):checkbox多選組必須命名爲checkbox[]形式;
$arr=$_REQUEST["checkbox"];
for($i=0;$i<count($arr);$i++)
echo "{$arr[$i]}";
1四、變量的引用,
(condition)?action1:action2至關於if(condition) action1 else action2.
funciton msg($j=0,$k=1,$l=3) 預約義參數值,若是參數不指定則用默認值,若是指定了就用指定值。
1七、htmlentities($_POST['$S'])將$S的內容中全部的特殊字符轉換成HTML表示方式。
全部會引發瀏覽器進行特殊處理的字符在進行了轉換後,就能確保顯示出來的是原來錄入的內容。
1八、-----------------頁面和代碼分離的一種模板(分htm和php)------------------
第1、php文件處理完全部的業務(control和model),查詢結果通常放到數組,而後htm文件裏面能夠直接調用數組變量。
php文件末尾必須include_once(htm文件)!!
$query=mysql_query($sql);
while($rs=mysql_fetch_array($query))
{
$catedb[]=$rs;
}
第2、htm文件只管顯示(view),寫代碼時候,使用 print <<<EOT 與 EOT; 搭配, EOT;的前面必定不能留空格,必須頂格,切記切記。
例如:
<!--
if(!empty($catedb)) //$catedb是sql查詢的結果集
{
foreach($catedb as $key=>$value)
{
print <<<EOT
-->
<ul><li>
<a href="admin.php?job=sort&do=editwin&id={$key}#分類編輯"><b>{$value['name']}</b></a>
<span class="smalltxt"> - 顯示順序: <input type="text" name="{$value['sid']}" value="{$value['vieworder']}" size="1"> -
<a href="admin.php?job=sort&do=editwin&id={$key}#分類編輯">[編輯]</a>
<a href="admin.php?job=sort&do=del&id={$value['sid']}">[刪除]</a>
</span></li>
</ul>
<!--
EOT;(必須頂格)
}
}
print <<<EOT
-->
第3、<!-- -->中,<?php ?>必須寫在最前面和最後面。
例如:
<!--
<?php
print <<<EOT
-->
html代碼
html代碼
<!--
EOT;
php代碼
print <<<EOT
-->
html代碼
html代碼
<!--
EOT;
?>
-->
//------------------------------------------------
1九、數據庫操做
//鏈接數據庫
$link=@mysql_connect(host,usr,name) or die("erro message!!");
@mysql_close($link);
//選擇數據庫
$db=@mysql_select_db("db_name") or die("err:3");
//查詢
$sql="select * from db";
$result=@mysql_query($sql) or die("erro message!!");
//顯示查詢結果集
$result=@mysql_query("SELECT id, name FROM mytable");
while ( $row = @mysql_fetch_array($result) )
{
printf ("ID: %s Name: %s", $row[0], $row["name"]);
}
//獲取查詢包含的記錄總數
mysql_num_rows($result) 返回select語句查詢結果的記錄總數。
mysql_affected_rows() 返回insert,delete,update等sql語句更新的記錄總數,注意此函數沒有參數!!。
mysql_num_fields($query) 返回select語句查詢結果的列(字段)總數。
//釋放查詢佔用的內存
mysql_free_result($result)
//事務操做
//修改記錄
mysql_array_rows($)和mysql_affected_rows()返回值必須>0纔算操做成功,
mysql_affected_rows())返回值多是-x負數,此時用if(mysql_affected_rows()))判斷也是返回true!!!
//------------------------------------------------
20、javascrīpt學習:
(1)、獲取表單的元素個數: form.elements.length
(2)、表單第(I-1)個元素的類型: form.elements[i].type="button"
(3)、表單元素的值:form.elements.value="";
(4)、複選框標記已經勾選:document.form.checkbox.checked=true
(5)、單選按鈕:document.form.radio.checked
(6)、Select的索引值:document.form.select.selectIndex
(7)、select的屬性:document.form.select.options[i].text;
document.form.select.options[i].value;
(8)、當前select的值:document.form.select.options[document.form.select.selectIndex].value;
//------------------------------------------------
2一、數組
$arr=array(1,2,3,4,5);
foreach($arr as $i=>$value)
echo $arr[$i];
//打印數組詳細內容 print_r($array)
<?php
$a = array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x','y','z'));
print_r ($a);
?>
count($arr) 返回數組$arr的列的數目。
//-----------------文件操做----------------------------
<form enctype="multipart/form-data" action="" method="POST">
Send this file: <input name="myfile" type="file">
form必須有參數說明enctype="multipart/form-data"纔能有文件上傳功能。
設置了文件上傳功能後,php自動創建了全局變量$_FILES;
$_FILES['myfile']['name'] 客戶端機器文件的原名稱。
$_FILES['myfile']['type'] 文件的 MIME 類型,須要瀏覽器提供該信息的支持,例如「image/gif」。
if( $_FILES['fl']['type']=='image/jpeg' ) 只能上傳JPEG類型文件
$_FILES['myfile']['size'] 已上傳文件的大小,單位爲字節。(不可靠的數據)
判斷上傳文件大小 if(filesize($_FILES['attachment']['tmp_name'])>1024000) (這樣判斷纔可靠)
$_FILES['myfile']['tmp_name'] 文件被上傳後在服務端儲存的臨時文件名。
$_FILES['myfile']['error'] 和該文件上傳相關的錯誤代碼。
php文件上傳時候,windows系統下的文件路徑必須是用\\來作轉義表示\,例如'c:\\windows\\'而不是'c:\windows\',;
php處理文件上傳作法:文件被上傳結束後,默認地被存儲在了臨時目錄中,這時您必須將它從臨時目錄中刪除或移動到其它地方,
若是沒有,則會被刪除。也就是不論是否上傳成功,腳本執行完後臨時目錄裏的文件確定會被刪除。
因此在刪除以前要將它複製到其它位置,此時,纔算完成了咱們的上傳文件過程。
$file=$_FILES['fl']['name'];
$tmp=$_FILES['fl']['tmp_name'];
if(move_uploaded_file($tmp,'c:\\apache\\htdocs\\'.$file))
echo 'upload file ok';
else
echo 'upload file failse';
上傳多個文件:有了上面的認識,同時上傳多個文件也就不難作了。上傳多個文件是從PHP3.0.10版本開始被支持。
要完成它,只需文件名以數組形式表示便可:
<form action="file-upload.php" method="post" enctype="multipart/form-data">
<input name="myFile[]" type="file"><br>
<input name="myFile[]" type="file"><br>
<input type="submit" value="上傳多個文件">
</form>
假如咱們上傳了兩個文件:first.txt 和 second.gif。表單被提交後,
$_FILES["myFile"]["name"][0]、$_FILES["myFile"]["size"][0]分別指first.txt文件的名字和大小,
$_FILES["myFile"]["name"][1]、$_FILES["myFile"]["size"][1]分別指 second.gif 的文件名字和大小。
固然,$_FILES["myFile"]["tmp_name"]、$_FILES["myFile"]["type"]也一樣會產生。
bool is_uploaded_file ( string filename )
說明:若是 filename 所給出的文件是經過 HTTP POST 上傳的則返回 TRUE。這能夠用來確保惡意的用戶
沒法欺騙腳本去訪問本不能訪問的文件,例如 /etc/passwd。這種檢查顯得格外重要,若是上傳的文件有
可能會形成對用戶或本系統的其餘用戶顯示其內容的話。爲了能使 is_uploaded_file() 函數正常工做,
必段指定相似於 $_FILES['userfile']['tmp_name'] 的變量,而在從客戶端上傳的
文件名 $_FILES['userfile']['name'] 不能正常運做。
<?php
$old_filename = $_FILES['attachment']['tmp_name'];//得到上傳到服務器臨時目錄得文件的名稱;
$new_filename = '/path/to/'.$_FILES['attachment']['name'];
if (move_uploaded_file($old_filename, $new_filename))//移動上傳臨時文件到制定目錄
{
/* $old_filename is an uploaded file, and the move was successful. */
}
?>
遍歷$mydir目錄下的文件和文件夾:
if($dirhandle=opendir($mydir))
while( false!==($fi=readdir($dirhandle)) )
echo $fi.'<br>';
closedir($dirhandle);
2二、數學函數
$a / $b 若是除不盡,結果是浮點數。
$a % $b 取商;
ceil($a) 四捨五入取值$a;
floor($a) 只取$a的整數部分;
-----------------------------------------------------------------------------------------------
2三、php與OOP
--------------------class.php------------------------------------
class database
{
public $num,$result;
public function query($sql)
{
$this->result=@mysql_query($sql) or die("err code 3: sql query fail") ;
return $this->result; //返回查詢結果集
@mysql_free_result($result) or die("err code 5: mysql_free_result() fail");
}
public function num_rows($sql)
{
$this->result=$this->query($sql); //經過$this->query引用query函數. $this->result引用成員變量result!!
$this->num=@mysql_num_rows($result) or die("err code 4: mysql_num_rows() fail");
return $this->num; //此函數返回查詢的結果數。
}
}
--------------------test.php------------------------------------
<?php
include_once("class.php");
$conn=new database;
$sql="select * from user order by userAge";
echo $conn->num_rows($sql)."<br>";
?>
//-------------------php與Ajax------------------------------------
因爲jsvascrīpt採用UTF8編碼,在windows下采用ajax回送服務器的返回信息就會出現亂碼,
所以在windows下應用時,php處理頁面ajax請求的頁面必須包含:
header('Content-Type:text/html;charset=GB2312');這句話,不然php獲取的中文數據返回到
ajax的html界面將顯示亂碼。
//輸出xml
<?
require_once("conn.php");
header("Conten-Type:text/xml");
echo "<?xml version=\"1.0\" encoding=\"gb2312\"?>";
echo "<menuitems>";
$result = mysql_db_query("myly","select * from myTable");
while($row = mysql_fetch_object($result)) {
echo "<item><species>".$row->name."</species>";
echo "<location><![CDATA[".$row->location."]]></location></item>";
}
echo "</menuitems>";
mysql_free_result($result);
mysql_close();
?>
//輸出xml------------------------------------------------------------------
<?phpheader("Conten-Type:text/xml");echo "<?xml version=\"1.0\" encoding=\"gb2312\"?>";echo "<user><row>";for($i=0;$i<5;$i++) { $str="<col{$i}>{$i}</col{$i}>"; echo $str; }echo "</row></user>";?>