『壹』 如何學習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的PHP5
PHP5在長時間的開發及多個預發布版本後,2004年7月13日,PHP5.0發布。該版本以Zend引擎Ⅱ為引擎,並且加入了新功能如PHP Data Objects(PDO)。PHP5.0版本強化更多的功能。首先,完全實現面向對象,提供名為PHP兼容模式的功能。其次是XML功能,PHP5.0版本支持可直觀地訪問XML數據、名為SimpleXML的XML處理用界面。同時還強化了XMLWeb服務支持,而且標准支持SOAP擴展模塊。資料庫方面,PHP新版本提供旨在訪問MySQL的新界面——MySQL。除此前的界面外,還可以使用面向對象界面和預處理語句(Prepared Statement)等MySQL的新功能.另外,PHP5.0上還捆綁有小容量RDBMS-SQLite. *構造函數和析構函數 * 對象的引用 * 對象的克隆 * 對象中的私有、公共及受保護模式 * 介面 (Interfaces)
* 抽象類 * __call * __set 和 __get * 靜態成員
構造函數和析構函數
在 PHP4 中,當函數與對象同名時,這個函數將成為該對象的構造函數,並且在 PHP4 中沒有析構函數的概念。
在 PHP5 中,構造函數被統一命名為 __construct,並且引入了析構函數的概念,被統一命名為 __destruct。
對象的引用
在PHP4中,傳遞變數給一個函數或方法,實際是把這個變數做了一次復制,也就意味著你傳給函數或方法的是這個變數的一個副本,除非你使用了引用符號「&;」 來聲明是要做一個引用,而不是一個 Copy。在 PHP5中,對象總是以引用的形式存在的,對象中的賦值操作同樣也都是一個引用操作。
對象的克隆
當一個對象始終以引用的形式來被調用時,如果我想得到該對象的一個副本,該怎麼辦呢?PHP5 提供了一個新的功能,就是對象的克隆,語法為 __clone。
抽象類
抽象類不能被實例化。
抽象類與其它類一樣,允許定義變數及方法。
抽象類同樣可以定義一個抽象的方法,抽象類的方法不會被執行,不過將有可能會在其派生類中執行。
__call
PHP5 的對象新增了一個專用方法 __call(),這個方法用來監視一個對象中的其它方法。如果你試著調用一個對象中不存在的方法,__call 方法將會被自動調用。
__set 和 __get
這是一個很棒的方法,__set 和 __get 方法可以用來捕獲一個對象中不存在的變數和方法。
類型指示
在 PHP5 中,你可以在對象的方法中指明其參數必須為另一個對象的實例。
靜態成員
靜態成員和靜態方法在面象對象編程的術語中被稱作 「類方法(class methods)」 和 「類變數(class variables)」。
「類方法」 在一個對象沒有實例化前允許被調用。同樣,「類變數」 在一個對象沒有實例化前可以被獨立操作控制(不需要用一個對象的方法來控制)。 異常處理是公認的處理程序錯誤的理想方法,在 Java及 C 中都有這個概念,我們欣喜的看到,在 PHP5 已經加入了這方面的應用。你可以嘗試使用 「try」 和 「catch」 來控製程序的錯誤。當有錯誤發生的時候,代碼會把錯誤交給 「catch」 子句來處理,在 「catch」 子句中,你需要指明要把錯誤交給某個對象處理,這樣做可以使代碼結構看起來更清晰,因為我們可以把所有的錯誤信息交給一個對象來處理。
自定義錯誤處理
你可以很方便的用自定義的處理錯誤的代碼來控制你的程序中的意外。你僅僅需要從異常類中派生出一個自己的錯誤控制類,在你自己的錯誤控制類中,你需要有一個構造函數和一個 getMessage 方法。 名稱空間對類的分組或函數分組很有用。它可以把一些相關的類或函數給組合到一起,方便以後調用。
例:名稱空間 <?phpnamespacemy
ame;//參考定義命名空間小節classMyClass{}functionmyfunction(){}constMYCONST=1;$a=newMyClass;$c=newmy
ameMyClass;//參考全局空間小節$a=strlen('hi');//參考使用命名空間:後備全局函數/常量小節$d=namespaceMYCONST;//參考namespace操作符和__NAMESPACE__常量」小節$d=__NAMESPACE__.'MYCONST';echoconstant($d);//參考命名空間和動態語言特徵小節?>注意你需要在何種情況下使用名稱空間,在實際運用中,你可能會需要聲明兩個或多個名稱一樣的對象來做不同的事情,那麼你就可以把他們分別放到不同的名稱空間中去(但介面是要相同的)。 從PHP5.3開始支持ZendGuard加密方式,必須安裝Zend Guard Loader,老的zend optimizer將不被支持。
Linux安裝Zend Guard Loader支持的過程:
操作系統為CentOS5.5,PHP版本為5.3.8(CentOS5.5中的PHP默認版本較低,如果要升級到PHP最新版,可以使用remi的report源進行升級)。
Windows 下面的 Zend Guard Loader 不支持php5.3.8 VC9 x86 Thread Safe而,php5.3.8 VC9 x86 Non Thread Safe 又不支持 apache。所以安裝的話,就需要安裝在iis或者和nginx搭配。
1、下載最新的Linux操作系統系下的Zend Guard Loader。
2、上傳至Linux伺服器並解壓縮,注意閱讀生成目錄下的README文件。全文如下(添加必要的注釋)。在/etc/php.d/目錄下創建文件zend.ini,內容如下: zend_extension=/usr/lib64/php/moles/ZendGuardLoader.so注意路徑一定要寫上,剛開始沒寫路徑,老是載入不上ZendGuardLoader .so,也可以直接將上面的配置寫入/etc/php.ini文件中,效果一樣。
3、重啟httpd服務:service httpd restart。
4.輸出<?php phpinfo(); ?>
PHP 5.5 正式版發布 不再支持 Windows XP
同時 PHP 開發者也提醒用戶,PHP 5.5 也包含一些不向後兼容的內容,包括:不再支持 Windows XP 和 2003 系統;不區分大小寫的匹配函數、類;常數名稱跟 Locale 無關,這對一些使用非 ASCII 代碼的常量名的開發者需要注意的。
『叄』 php,cut_str()是怎麼用的
PHP 中沒有叫 cut_str() 的庫函數,它可能是你所用的那套軟體的開發者自定義的函數,你應該從相關的代碼中去找該函數的定義來理解它的使用方法。
『肆』 求PHP 數組的任意組合的演算法函數
function getRank($arr, $len=0, $str="") {
global $arr_getrank;
$arr_len = count($arr);
if($len == 0){
$arr_getrank[] = $str;
}else{
for($i=0; $i<$arr_len; $i++){
$tmp = array_shift($arr);
if (empty($str))
{
getRank($arr, $len-1, $tmp);
}
else
{
getRank($arr, $len-1, $str.",".$tmp);
}
// array_push($arr, $tmp);
}
}
}
測試:
$words = array('a1','b2','c3','d4','e5');
$arr_getrank = array();
getRank($words, 3);
print_r($arr_getrank);
輸出:
Array
(
[0] => a1,b2,c3
[1] => a1,b2,d4
[2] => a1,b2,e5
[3] => a1,c3,d4
[4] => a1,c3,e5
[5] => a1,d4,e5
[6] => b2,c3,d4
[7] => b2,c3,e5
[8] => b2,d4,e5
[9] => c3,d4,e5
)
『伍』 php 兩個普通數組合並為一個普通數組
php兩個普通數組合並為一個普通數組可以參考下面的代碼:
<?php
$a=array(1,2,3,4,5);
$b=array(6,7,8,9,10);
$c=array_merge($a,$b);
print_r($c);
?>
註:當被合並的數組中有一個數組為空時,可能會出現合並後的數組也為空。
(5)php組合函數擴展閱讀:
PHP常用函數
printf()函數輸出格式化的字元串。
print()函數輸出一個或多個字元串。
parse_str()函數把查詢字元串解析到變數中。
ord() 函數返回字元串第一個字元的 ASCII 值。
number_format()函數通過千位分組來格式化數字。
nl2br()函數在字元串中的每個新行 ( ) 之前插入 HTML 換行符 (<br />)。
nl_langinfo()函數返回指定的本地信息。
『陸』 PHP常用函數有哪些
常用函數比較多
如:字元串處理函數,數組函數,日期函數,MySQL函數,文件系統函數,GD函數庫等
『柒』 用php完成排列組合問題
functionnumOfChoice($m,$n){
returnpow($m)/pow($n)/pow($m-$n);
}
functionpow($n){
$x=1;
for($i=2;$i<=n;$i++)$x*=$i;
return$x;
}
『捌』 PHP 二維數組所有元素組合的函數
你是想組成4*5*3個嗎,如果是這樣的話很簡單,直接三個foreach嵌套就可以出來了啊
『玖』 如何學習PHP array
先學會怎樣創建php數組,刪除數組,添加數組,數組的一些其他操作函數:
然後把這php數組家族的所有函數看一遍
最後學會怎樣遍歷數組,foreach和while,for的使用。
『拾』 用php定義一個函數,可以求出並返回數組中不同元素相加得17的所有的組合。
<?php
$arr=array(1,2,3,4,5,6,7,8,9,10,11);
$data=seventeen($arr);
var_mp($data);
functionseventeen($arr){
$st=null;
$temp=null;
$diff=null;
$data=array();
$oper=null;
foreach($arras$key=>$value){
$oper=$arr;
$st=$value;
unset($oper[$key]);
$data[$key] =null;
$data[$key].=$value.",";
if($st==17){
$data[$key]=$value;
continue;
}
while($st<17)
{
$diff=17-$st;
$find=array_search($diff,$oper);
if($find!=false){
$st=$oper[$find]+$st;
$data[$key].=$oper[$find].",";
}
if($find==false){
$data[$key].=reset($oper).",";
$st=$st+reset($oper);
$hj=array_search(reset($oper),$oper);
unset($oper[$hj]);
}
}
if($st>17)
continue;
}
return$data;
}
?>
我盡量可能多的遍歷結果我這個數組用這個程序遍歷出來10種組合,但是我覺得不太完善還,你可以再修改補充。
我想了想,問題還很多,我會繼續思考這個問題知道給你一個滿意的答復