Ⅰ 在php代碼中變數和函數是如何定義的
變數的定義 $符號+變數名,如 $a 。
函數定義直接 function 函數名(參數1,參數2){}
Ⅱ php調用自定義函數
PHP代碼call_user_func函數類似於一種特別的調用函數的方法,使用方法如下:
function
a($b,$c)
{
echo
$b;
echo
$c;
}
call_user_func('a',
"111","222");
call_user_func('a',
"333","444");
//顯示
111
222
333
444
?>
調用類內部的方法比較奇怪,居然用的是array,不知道開發者是如何考慮的,當然省去了new,也是滿有新意的:
class
a
{
function
b($c)
{
echo
$c;
}
}
call_user_func(array("a",
"b"),"111");
//顯示
111
?>
call_user_func_array函數和call_user_func很相似,只不過是換了一種方式傳遞了參數,讓參數的結構更清晰:
function
a($b,
$c)
{
echo
$b;
echo
$c;
}
call_user_func_array('a',
array("111",
"222"));
//顯示
111
222
?>
call_user_func_array函數也可以調用類內部的方法的
Class
ClassA
{
function
bc($b,
$c)
{
$bc
=
$b
+
$c;
echo
$bc;
}
}
call_user_func_array(array('ClassA','bc'),
array("111",
"222"));
//顯示
333
?>
call_user_func函數和call_user_func_array函數都支持引用,這讓他們和普通的函數調用更趨於功能一致:
function
a($b)
{
$b++;
}
$c
=
0;
call_user_func('a',
$c);
echo
$c;//顯示
1
call_user_func_array('a',
array($c));
echo
$c;//顯示
2
另:call_user_func函數和call_user_func_array函數都支持引用。
?phpfunction
increment(&$var){
$var++;}$a
=
0;call_user_func('increment',
$a);echo
$a;
//
0call_user_func_array('increment',
array(&$a));
//
You
can
use
this
insteadecho
$a;
//
1?
Ⅲ php中使用什麼函數定義一個自定義函數
php語言中,使用 function來聲明一個函數
如: 用function 聲明一個名稱為get_article_info的函數,函數的參數為 $id
/**
*獲得指定的文章的詳細信息
*
*@accessprivate
*@paraminteger$id
*@returnarray
*/
functionget_article_info($id)
{
/*獲得文章的信息*/
$sql="SELECTa.*,IFNULL(AVG(r.comment_rank),0)AScomment_rank".
"FROM".$GLOBALS['ecs']->table('article')."ASa".
"LEFTJOIN".$GLOBALS['ecs']->table('comment')."ASrONr.id_value=a.article_idANDcomment_type=1".
"WHEREa.is_open=1ANDa.article_id='$id'GROUPBYa.article_id";
$row=$GLOBALS['db']->getRow($sql);
if($row!==false)
{
$row['comment_rank']=ceil($row['comment_rank']);//用戶評論級別取整
$row['add_time']=local_date($GLOBALS['_CFG']['date_format'],$row['add_time']);//修正添加時間顯示
/*作者信息如果為空,則用網站名稱替換*/
if(empty($row['author'])||$row['author']=='_SHOPHELP')
{
$row['author']=$GLOBALS['_CFG']['shop_name'];
}
}
return$row;
}
Ⅳ php 定義函數解釋
有點長啊~~
我簡要的說下我的理解了~~
這個函數的主要功能是用來過濾html代碼中的 js和css樣式的 還有frame窗口文件
$new = array("&"," ","'",""","<",">"," ","");
這是第一個new數組第四個元素應該要轉義的,這是一個錯誤。應改為:
$new = array("&"," ","'","\"","<",">"," ","");
主要邏輯是:
判斷是否存在變數
判斷是不是字元串數組
數組的話要循環調用safe處理
非數組直接處理 就是所說的主要功能
把以上代碼替換為空字元返回。
Ⅳ 在php中如何使用自定義函數庫
php語言中,使用function來聲明一個函數
如:用function聲明一個名稱為get_article_info的函數,函數的參數為$id
/***獲得指定的文章的詳細信息**@accessprivate*@paraminteger$id*@returnarray*/functionget_article_info($id){/*獲得文章的信息*/$sql="SELECTa.*,IFNULL(AVG(r.comment_rank),0)AScomment_rank"."FROM".$GLOBALS['ecs']->table('article')."ASa"."LEFTJOIN".$GLOBALS['ecs']->table('comment')."ASrONr.id_value=a.article_idANDcomment_type=1"."WHEREa.is_open=1ANDa.article_id='$id'GROUPBYa.article_id";$row=$GLOBALS['db']->getRow($sql);if($row!==false){$row['comment_rank']=ceil($row['comment_rank']);//用戶評論級別取整$row['add_time']=local_date($GLOBALS['_CFG']['date_format'],$row['add_time']);//修正添加時間顯示/*作者信息如果為空,則用網站名稱替換*/if(empty($row['author'])||$row['author']=='_SHOPHELP'){$row['author']=$GLOBALS['_CFG']['shop_name'];}}return$row;}
Ⅵ php自帶的函數都寫在哪個文件里能自己定義函數嗎
自帶的函數很多,可以在線查看或者下載PHP手冊,裡面有完整的。
可以自定義函數,我剛才在這個帖子裡面的回復有一個自定義函數的例子:http://..com/question/96295123.html
Ⅶ php函數內定義函數
匿名函數
<?php
functiontest(){
$func=function(){
echo'test';
};
$func();
}
?>
Ⅷ 在PHP中如何正確創建函數
Step 1 =>
php的擴展模塊都放在 ext/ 目錄下,比如說 snmp模塊、mysql模塊。 我們要建立自己的模塊,就要在ext目錄下為自己的模塊建一個目錄。比如,我們要做一個分析config文件的模塊,命名為pconfig模塊(parse config的簡寫),需在ext下建立目錄pconfig。將我寫好的7個文件到該目錄下,另外需對主目錄下的configure和internal_functions.c作一些修改。
Step 2 =>
Makefile.am Makefile.in
是模板文件,用戶執行configure時,會調用這兩個文件,生成編譯時所用的Makefile文件。修改時將小寫的pconfig換成你自己的模塊名,別忘了把大寫的PCONFIG也替換掉(不要告訴我你不會vi的替換語句)。config.m4也是執行configure將會調用的檢測腳本程序,以後我們來討論這些腳本程序的更深入的修改。現在你只需要把pconfig該成你的模塊就可以了。對config.h.stub和setup.stub也如法炮製。其實setup.stub也沒什麼用。
Step 3 =>
php3-pconfig.h 頭文件中
extern php3_mole_entry pconfig_mole_entry;
#define pconfig_mole_ptr &pconfig_mole_entry
#define phpext_pconfig_ptr pconfig_mole_ptr
這幾行定義了模塊的入口,將入口注冊到php後,php會通過模塊入口找到你寫的函數
下面幾個函數定義是用宏進行定義的,展開以後其實就是 php3_minit_pconfig , php3_rinit_pconfig ……分別在你的模塊初試化或結束時被調用,如果你的模塊很簡單,也就不需要這些定義了
extern PHP_MINIT_FUNCTION(pconfig);
extern PHP_RINIT_FUNCTION(pconfig);
extern PHP_MSHUTDOWN_FUNCTION(pconfig);
PHP_MINFO_FUNCTION(pconfig);
這是你的函數聲明,將來寫在php腳本語句中的函數名就是在PHP_FUNCTION中定義的名字。
PHP_FUNCTION(pconfig_test);
如果有多個,還可以繼續往下加
PHP_FUNCTION(pconfig_parsefile);
PHP_FUNCTION(pconfig_release); …….
Step 4 =>
接下來我們看最重點的C代碼了
function_entry pconfig_functions[] = {
PHP_FE(pconfig_test, NULL)
{NULL, NULL, NULL}
};
定義的是你的函數的入口(前面我們提到過模塊的入口),按照格式將你在頭文件中定義的函數寫進去吧。注意,這是用宏定義的,不要管語法是否正確。以後我們具體討論這些宏的用法。
php3_mole_entry pconfig_mole_entry = {
"pconfig", pconfig_functions, PHP_MINIT(pconfig), PHP_MSHUTDOWN(pconfig), PHP_RINIT(pconfig), NULL, PHP_MINFO(pconfig), STANDARD_MODULE_PROPERTIES
};
注冊模塊的入口信息,比如模塊名,函數介面,初試化模塊將調用的函數等等,如果你的模塊不執行復雜操作的話,可以忽略掉他們,寫成
php3_mole_entry pconfig_mole_entry = {
"pconfig", pconfig_functions, NULL,NULL,NULL,NULL,NULL,STANDARD_MODULE_PROPERTIES
};
Step 5 =>
寫你自己的函數
在頭文件和function_entry處,我們已經定義了自己的函數pconfig_test,現在我們就來實現pconfig_test的功能。就比如執行兩個數相加的和吧。
static void _php3_pconfig_test(INTERNAL_FUNCTION_PARAMETERS)
{ ......
}
PHP_FUNCTION(pconfig_test)
{
_php3_pconfig_test(INTERNAL_FUNCTION_PARAM_PASSTHRU);
}
當系統調用pconfig_test時,會調用你的_php3_pconfig_test函數,當然你也可以把_php3_pconfig_test里的內容直接寫在PHP_FUNCTION(pconfig_test)中,這樣做只是程序結構比較清晰。注意:不要將_php3_pconfig_test命名成php3_pconfig_test,PHP_FUNCTION(pconfig_test)宏展開後實際上就是php3_pconfig_test!
Step 6 =>
好了,現在我們開始修改configure,在echo $ac_n "checking for MySQL support""... $ac_c" 1>&6的前面(當然,如果你熟悉configure的話,可以加在任何合適的地方)加上下面幾句話
if test "${with_pconfig+set}" = set; then
withval="$with_pconfig"
# Add your lib in here
EXTRA_LIBS="$EXTRA_LIBS"
# Add your include path in here
INCLUDES="$INCLUDES"
EXT_SUBDIRS="$EXT_SUBDIRS pconfig"
EXT_LIBS="$EXT_LIBS pconfig/libphpext_pconfig.a"
EXTINFO_DEPS="$EXTINFO_DEPS ../ext/pconfig/extinfo.c.stub"
EXT_STATIC="$EXT_STATIC pconfig"
fi
修改internal_functions.c,在頭文件定義中加入#include "ext/pconfig/php3_pconfig.h"
在zend_mole_entry數組中加入phpext_pconfig_ptr,
Step 7 =>
從新configure,帶上需要的參數,不要忘記的是在參數里加入 --with-pconfig
Step 8 =>
index.php3
<? echo pconfig_test(123,678)."
"; ?>
執行%>php index.php3
810
Ⅸ 關於php自定義函數庫文件的引用
執行效率影響確實不大,不過建議樓主不要每次寫東西都復制粘貼,這樣影響進步。我個人的經驗,這個functions.php中的內容不能總是只增不減,隨著你的水平的提高,有的功能可能你會發現它們可以有更適當的安排。也許一些函數可以組織起來變成一個對象,也許有的函數更合適作為某個對象中的一個方法,這些都能夠幫你減少自定義函數文件的體積。