『壹』 php function 怎麼用
用戶自定義函數也稱自定義函數,它們不是PHP提供的,是由程序員創建的.由於自己創建了這樣的函數,所以就可以完全控制這些函數.因此可以讓一個函數完全按照自己希望的方式運行
1,申明函數
在PHP中,定義函數的方法同其他編程語言幾乎一樣.下面是PHP申明函數的語法結構:
復制代碼代碼如下:
Function function_name($argument1,$argument2,$argument3,......$argumentn)
{
//函數代碼code
Return 返回值;
}
以上語法結構中,關鍵字的含義如下.
(1)function:用於申明用戶自定義函數的關鍵字.
(2)function_name:要創建的函數名稱.該名稱將在以後被調用時使用.函數名應該唯一,因為PHP不支持重載.在命名函數的時候,需要遵循和變數命名
相同的原則.但是函數名不能以$開頭,而變數可以.
(3)argument:要傳遞給函數的值.函數可以有多個參數,它們之間用逗號.但是參數項是可選的,可以在調用函數的時候不傳遞任何參數.
(4)code:是在函數被調用的時候執行的一段代碼.如果有兩條或者多條語句,則代碼必須用大括弧"{}"括起來.但是,如果只有一條代碼,則不需要大括弧.
(5)Return:將調用的代碼需要的值返回.任何類型都可以返回,包括列表和對象.這導致函數立即結束它的運行,並且將控制權傳遞回它被調用的行.
2,無參數函數
代碼func_1.php
復制代碼代碼如下:
<?php
require 'a.php';
echo "我不會被執行!";
?>
3,有參數函數
PHP支持按值傳遞參數(默認),通過引用傳遞和默認參數值.可變長度參數列表僅在PHP4和後繼版本中被支持.
(1)值傳遞參數.按值進行參數傳遞是PHP的默認傳遞方式.使用這個方法,必須在主程序調用時傳遞一個值(參數).
代碼sum.php
復制代碼代碼如下:
<?php
function sum ($a,$b)
{
Echo $a+$b;
}
sum(100,20); //開始調用該函數
?>
(2)引用參數.在按照值傳遞的時候,只有參數的副本傳遞給被調用的函數.但是在被調用函數內部對這些值的任何修改,都不會影響調用函數
中的原始值.引用傳遞其實也就是地址傳遞,將一個變數的地址作為參數傳遞.
代碼valuechange.php
復制代碼代碼如下:
<?php
$myNum=100;
function Valuechange ($number)
{
$number=$number+1;
Echo $number . "<br>";
}
Valuechange($myNum);
Echo $myNum;
?>
(3)默認值參數.使用默認的參數值傳遞方法,函數必須在調用的時候有一個參數.如果沒有使用的值,就把默認值傳遞給函數參數.默認值必須是常量表達式,不是變數,
類成員或者函數調用.
提示:當使用默認參數時,任何默認參數必須放在非默認參數的右側;否則,可能函數不會按照預期的情況工作.
代碼func_default.php
復制代碼代碼如下:
<?php
$myNum=100;
function Valuechange ($number)
{
$number=$number+1;
Echo $number . "<br>";
}
Valuechange($myNum);
Echo $myNum;
?>
『貳』 PHP strcmp()和strcasecmp()的區別實例
這篇文章主要介紹了PHP中strcmp()和strcasecmp()函數字元串比較用法,結合實例形式較為詳細的分析了strcmp()和strcasecmp()函數的功能,使用方法與區別
本文實例講述了PHP中strcmp()和strcasecmp()函數字元串比較用法。分享給大家供大家參考,具體如下:
一、PHP中strcmp()函數用於比較兩個字元串(區分大小寫),其定義如下:
strcmp(string1,string2)
參數說明:
string1
必需。規定要比較的第一個字元串。
string2
必需。規定要比較的第二個字元串。
PS:strcmp()函數與
strncmp()
函數類似,不同的是,strncmp()可以指定每個字元串用於比較的字元數。
二、PHP中strcasecmp()函數比較兩個字元串(不區分大小寫),其定義如下:
strcasecmp(string1,string2)
參數說明:
string1
必需。規定要比較的第一個字元串。
string2
必需。規定要比較的第二個字元串。
PS:strcasecmp()函數與
strncasecmp()
函數類似,不同的是,strncasecmp()可以指定每個字元串用於比較的字元數。
示例代碼:
<?php
$str1="碼農教程";
$str2="碼農教程";
$str3="www.jmanongjc.com";
$str4="www.jmanongjc.COM";
echo
strcmp($str1,$str2);//兩個字元串相等
echo
"<br/>";
echo
strcmp($str3,$str4);//注意該函數區分大小寫
echo
"<br/>";
echo
strcasecmp($str3,$str4);//該函數不區分大小寫
?>
結果:
";
echo
strcmp($str3,$str4);//注意該函數區分大小寫
echo
"
";
echo
strcasecmp($str3,$str4);//該函數不區分大小寫
?>
補充:關於返回值問題
針對參數string1與string2的比較:
如果兩個字元串相等,則返回值為
0
如果
string1
小於
string2,則返回值小於0
如果
string1
大於
string2,則返回值大於0
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
『叄』 PHP實現的自定義數組排序函數與排序類示例
本文實例講述了PHP實現的自定義數組排序函數與排序類。分享給大家供大家參考,具體如下:
/*
*
二維數組自定義排序函數
*
uasort($arr,function_name)
*
**/
$arr
=
array(
array('a'=>1,'b'=>'c'),
array('a'=>4,'b'=>'a'),
array('a'=>5,'b'=>'g'),
array('a'=>7,'b'=>'f'),
array('a'=>6,'b'=>'e')
);
function
compare_arr($x,$y){
if($x['b']<$y['b']){
return
-1;
}else
if($x['b']>$y['b']){
return
1;
}else{
return
0;
}
}
uasort($arr,'compare_arr');
foreach($arr
as
$a){
echo
$a['a'].'=>'.$a['b'].'<br/>';
}
手冊里的自定義排序類:
class
multiSort
{
var
$key;
//key
in
your
array
//排序函數
參數依次是
數組
待排列索引
排序類型
function
run
($myarray,
$key_to_sort,
$type_of_sort
=
'')
{
$this->key
=
$key_to_sort;
if
($type_of_sort
==
'desc')
uasort($myarray,
array($this,
'myreverse_compare'));
else
uasort($myarray,
array($this,
'mycompare'));
return
$myarray;
}
//正序
function
mycompare($x,
$y)
{
if
(
$x[$this->key]
==
$y[$this->key]
)
return
0;
else
if
(
$x[$this->key]
<
$y[$this->key]
)
return
-1;
else
return
1;
}
//逆序
function
myreverse_compare($x,
$y)
{
if
(
$x[$this->key]
==
$y[$this->key]
)
return
0;
else
if
(
$x[$this->key]
>
$y[$this->key]
)
return
-1;
else
return
1;
}
}
更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP數組(Array)操作技巧大全》、《php排序演算法總結》、《php字元串(string)用法總結》、《PHP針對XML文件操作技巧總結》、《PHP錯誤與異常處理方法總結》、《PHP運算與運算符用法總結》、《PHP基本語法入門教程》、《php面向對象程序設計入門教程》、《php+mysql資料庫操作入門教程》及《php常見資料庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
『肆』 php mysql_real_escape_string函數用法與實例教程
轉義特殊字元在unescaped_string,考慮到當前字元的連接設置,以便它在的地方是安全的在mysql_query()它。如果二進制數據要插入,這個函數必須被使用
下列字元受影響:
\x00
\n
\r
\
'
"
\x1a
如果成功,則該函數返回被轉義的字元串。如果失敗,則返回
false。
語法mysql_real_escape_string(string,connection)
參數
描述
string
必需。規定要轉義的字元串。
connection
可選。規定
MySQL
連接。如果未規定,則使用上一個連接。
說明
本函數將
string
中的特殊字元轉義,並考慮到連接的當前字元集,因此可以安全用於
mysql_query()。
提示和注釋
提示:可使用本函數來預防資料庫攻擊。
例子
例子
1
復制代碼
代碼如下:
<?php
$con
=
mysql_connect("localhost",
"hello",
"321");
if
(!$con)
{
die('Could
not
connect:
'
.
mysql_error());
}
//
獲得用戶名和密碼的代碼
//
轉義用戶名和密碼,以便在
SQL
中使用
$user
=
mysql_real_escape_string($user);
$pwd
=
mysql_real_escape_string($pwd);
$sql
=
"SELECT
*
FROM
users
WHERE
user='"
.
$user
.
"'
AND
password='"
.
$pwd
.
"'"
//
更多代碼
mysql_close($con);
?>
『伍』 php中file_get_contents()函數用法實例
我們先來看一下php中的
file_get_contents()函數的語法
string
file_get_contents(string
$
filename,bool
$
include_path
=
false,resource
$
context,int
$
offset
=
0,int
$
maxlen)
filename是文件或URL的名稱。
include_path如果啟用,則在include_path中搜索文件
context這是用於修改流的行為的選項集
offset此值指定要讀取的文件的起始位置。
maxlen此值指定要讀取的位元組數。
將文件內容讀取為字元串
這個php示例將從文件中讀取內容並存儲到字元串變數中。
<?php
$
content
=
file_get_contents(「input.txt」);
echo
$
content;
?>
將內容從URL讀取到字元串
<?php
$content
=
file_get_contents("http://example.com");
echo
$content;
?>
以上就是關於php中file_get_contents()函數的相關知識點,感謝大家的閱讀和對腳本之家的支持。
您可能感興趣的文章:PHP
fopen()和
file_get_contents()應用與差異介紹
『陸』 php5中魔術方法函數有哪幾個,請舉例說明各自的用法
__construct() :實例化對象時被調用;
__destuct():當刪除一個對象或者對象操作終止是被執行;
__call():調用對象不存在方法時被調用;
__get():調用對象不存在的屬性時被調用;
__set():設置對象不存在的屬性時被調用;_
_toString():列印一個對象時被調用,比如echo $obj,print($obj);
__clone():克隆對象時被調用,比如$t = new Test();$tt = clone $t;
__sleep():serialize之前被調用,若對象比較大,想做一些刪除在序列化,可以考慮使用該方法;
__wakeup():unserialize之前被調用,做些對象的初始化;
__isset():檢測對象是否存在屬性的時候被調用,如 isset($c->name);
__unset():unset一個對象屬性時被調用,如:unset($c->name);
__set_state():調用var_export時被調用,用__set_state的返回值作為 var_export的返回值;,
__autoload():實例化一個對象時,如果對應的類不存在,在該方法被調用。
希望你能採納,謝謝。
system函數
說明:執行外部程序並顯示輸出資料。
語法:string
system(string
command,
int
[return_var]);
返回值:
字元串
詳細介紹:
本函數就像是
C
語中的函數
system(),用來執行指令,並輸出結果。若是
return_var
參數存在,則執行
command
之後的狀態會填入
return_var
中。同樣值得注意的是若需要處理用戶輸入的資料,而又要防止用戶耍花招破解系統,則可以使用
EscapeShellCmd()。若
PHP
以模塊式的執行,本函數會在每一行輸出後自動更新
Web
伺服器的輸出緩沖暫存區。若需要完整的返回字元串,且不想經過不必要的其它中間的輸出界面,可以使用
PassThru()。
實例代碼:
復制代碼
代碼如下:
<
?php
$last_line
=
system('ls',
$retval);
echo
'Last
line
of
the
output:
'
.
$last_line;
echo
'<hr
/>Return
value:
'
.
$retval;
?>
exec函數
說明:執行外部程序。
語法:string
exec(string
command,
string
[array],
int
[return_var]);
返回值:
字元串
詳細介紹:
本函數執行輸入
command
的外部程序或外部指令。它的返回字元串只是外部程序執行後返回的最後一行;若需要完整的返回字元串,可以使用
PassThru()
這個函數。
要是參數
array
存在,command
會將
array
加到參數中執行,若不欲
array
被處理,可以在執行
exec()
之前呼叫
unset()。若是
return_var
跟
array
二個參數都存在,則執行
command
之後的狀態會填入
return_var
中。
值得注意的是若需要處理使用者輸入的資料,而又要防止使用者耍花招破解系統,則可以使用
EscapeShellCmd()。
實例代碼:
復制代碼
代碼如下:
<
?php
echo
exec('whoami');
?>
popen函數
說明:打開文件。
語法:int
popen(string
command,
string
mode);
返回值:
整數
詳細介紹:
本函數執行指令開檔,而該文件是用管道方式處理的文件。用本函數打開的文件只能是單向的
(只能讀或只能寫),而且一定要用
pclose()
關閉。在文件操作上可使用
fgets()、fgetss()
與
fputs()。若是開檔發生錯誤,返回
false
值。
實例代碼:
復制代碼
代碼如下:
<
?
$fp
=
popen("/bin/ls","r"
);
?>
PHP監控linux伺服器負載
在實際項目的應用中,我們由於各種條件的現實,利用PHP來實現伺服器負載監控將是一種更為靈活的方式。
由於Web
Server以及PHP的實現方式所限,我們在現實環境中很難利用PHP去調用一些Linux中需要root許可權才能執行的程序,對此,我從網上找到另外一種方式來繞開這個限制。首先先寫個c程序中轉調用系統命令,然後用PHP去執行此c程序。
c程序
首先寫個c文件,比如/usr/local/ismole/w.c
復制代碼
代碼如下:
#include<stdio.h>
#include<stdlib.h>
#include<systypes.h>
#include<unistd.h>
int
main()
{
uid_t
uid
,euid;
//note
獲得當前的uid
uid
=
getuid();
//note
獲得當前euid
euid
=
geteuid();
//note
交換這兩個id
if(setreuid(euid,
uid))
perror("setreuid");
//note
執行將要執行linux系統命令
system("/usr/bin/w");
return0;
}
編譯該文件gcc
-o
w
-Wall
w.c,這時會在當前目錄下生成程序w。改變此程序的屬主chmod
u+s
./w。
PHP執行
文件內容如下,放在web目錄下,訪問就會輸出當前的伺服器負載情況。
復制代碼
代碼如下:
<?php
/*
More
&
Original
PHP
Framwork
Copyright
(c)
2007
-
2008
IsMole
Inc.
$Id:
serverMonitor.php
408
2008-12-02
08:07:40Z
kimi
$
*/
//note
key的驗證過程
if($key
!=
$authkey)
{
//
exit('key
error);
}
$last_line
=
exec('/usr/local/ismole/w',
$retval);
$returnArray
=
explode("load
average:
",
$retval[0]);
$returnString
=
$returnArray[1];
echo
$returnString;
按照上面的實例,我們可以用PHP來做任何我們想執行的Linux系統命令,SVN更新,伺服器監控,備份,恢復,日常維護等等。
『捌』 PHP implode() 函數實例教程
PHP
implode()
函數實例教程
定義和用法
implode(
)函數返回一個字元串的內容陣列。
語法
implode(separator,array)參數說明分隔可選。指定放什麼東西到之間的數組元素。默認為“
”
(空字元串)
陣列必需的。陣列加入到一個字元串--------------------------------------------------
------------------------------
提示和說明註:implode(
)函數接受其參數要麼秩序。然而,對於符合implode炸(
)
,你應該使用記錄命令的論點。
註:分隔參數的implode(
)是可選的。但是,建議總是使用兩個參數的向後兼容。
--------------------------------------------------
------------------------------
例如
<?php
$arr
=
array('Hello','World!','Beautiful','Day!');
echo
implode("
",$arr);
?>
輸出.
Hello
World!
Beautiful
Day!
『玖』 php中目錄操作opendir()、readdir()及scandir()用法示例
本文實例講述了php中目錄操作opendir()、readdir()及scandir()用法。分享給大家供大家參考,具體如下:
opendir(path,context)若成功,則該函數返回一個目錄流,否則返回
false
以及一個
error。可以通過在函數名前加上
「@」
來隱藏
error
的輸出。
readdir()
函數返回由
opendir()
打開的目錄句柄中的條目。若成功,則該函數返回一個文件名,否則返回
false。
scandir()
函數返回一個數組,其中包含指定路徑中的文件和目錄。
若成功,則返回一個數組,若失敗,則返回
false。如果
directory
不是目錄,則返回布爾值
false
付上2段搜到的讀取目錄的代碼,親測有效
顯示目錄中文件名
//
打開目錄,然後讀取其內容
if
(is_dir($dir)){
if
($dh
=
opendir($dir)){
while
(($file
=
readdir($dh))
!==
false){
echo
"filename:"
.
$file
.
"<br>";
}
closedir($dh);
}
}
拷貝一個目錄的文件到另一個目錄
_dir($from_dir,$to_dir);
function
_dir($from_dir,$to_dir){
if(!is_dir($from_dir)){
return
false;
}
echo
"\r\n
from:",$from_dir,'---to',$to_dir;
$from_files
=
scandir($from_dir);
//如果不存在目標目錄,則嘗試創建
if(!file_exists($to_dir)){
@mkdir($to_dir);
}
if(!empty($from_files)){
foreach
($from_files
as
$file){
if($file
==
'.'
||
$file
==
'..'
){
continue;
}
if(is_dir($from_dir.'/'.$file)){//如果是目錄,則調用自身
_dir($from_dir.'/'.$file,$to_dir.'/'.$file);
}else{//直接到目標文件夾
($from_dir.'/'.$file,$to_dir.'/'.$file);
}
}
}
}
更多關於PHP相關內容感興趣的讀者可查看本站專題:《PHP目錄操作技巧匯總》、《php文件操作總結》、《PHP常用遍歷演算法與技巧總結》、《PHP數據結構與演算法教程》、《php程序設計演算法總結》、《PHP數組(Array)操作技巧大全》、《php字元串(string)用法總結》及《php常見資料庫操作技巧匯總》
希望本文所述對大家PHP程序設計有所幫助。
您可能感興趣的文章:使用PHP函數scandir排除特定目錄PHP獲取當前文件所在目錄
getcwd()函數php文件夾與文件目錄操作函數介紹php中判斷文件空目錄是否有讀寫許可權的函數代碼PHP解析目錄路徑的3個函數總結PHP使用glob函數遍歷目錄或文件夾的方法php
file_exists
檢查文件或目錄是否存在的函數PHP遍歷目錄函數opendir()、readdir()、closedir()、rewinddir()總結PHP刪除非空目錄的函數代碼小結PHP目錄函數實現創建、讀取目錄教程實例php使用scandir()函數掃描指定目錄下所有文件示例
『拾』 PHP中的函數
ThinkPHP中 C(),D(),S()
1.在具體的Action方法裡面,可以用C()對某些參數進行動態配置,主要指那些還沒有使用的參數。具體用法如下:
C('參數名稱'); //獲取已經設置的參數值
C('參數名稱','新的參數值'); //設置新的值
2.D()函數的使用:
先定義好模型類,如UserModel,然後就可以用D()函數對數據進行操作了。例如:
先在"你的項目"\Lib\Model下建立一個名為UserModel.class.php的PHP腳本,內容如下:
class UserModel extends Model{}
然後,無需增加任何屬性和方法,就可以進行如下操作:
$User = D("User"); //實例化User對象,User是你在資料庫建立的一個名為"前綴_user"的數據表
也可以用$User = new UserModel()代替,進行實例化對象的操作。
實例化之後,就可以對數據進行增刪查改等一系列操作了,如:
$User->find(1); //查找主鍵為1的記錄
3.S()函數的使用:
ThinkPHP把各種緩存方式都抽象成統一的緩存類來調用,而且ThinkPHP把所有的緩存機制統一成一個S方法來進行操作,所以在使用
不同的緩存方式的時候並不需要關注具體的緩存細節。如:
S('data',$Data); //使用data標識緩存$Data數據
S('data',$Data,3600); //緩存$Data數據3600秒
$Data = S('data'); //獲取緩存數據