Ⅰ 在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中的内容不能总是只增不减,随着你的水平的提高,有的功能可能你会发现它们可以有更适当的安排。也许一些函数可以组织起来变成一个对象,也许有的函数更合适作为某个对象中的一个方法,这些都能够帮你减少自定义函数文件的体积。