1. php函数调用参数的问题,主要是参数数量不确定。
参数不确定的情况下敢不敢把所有的参数和值按照key=>value的性质组织成数组,然后json_encode一下,函数调用的时候传递一个参数,参数的值就是这个json,然后过去再把json_decode成数组?你觉得呢?
2. php中类的构造函数参数问题
其实很多OOP语言都差不多,对于对象的传递是引用,如果你不想对象被引用,那你需要把对象clone一个新对象。 字串与数值的是值传递。
3. PHP调用类的函数&session传递对象问题
使用SESSION存储的对象时,需要载入该对象所属类的定义。在你的例子中,SESSION中的对象为a的实例,你必须包含定义类a的文件,否则对象会失效。即会得到不完整类PHP_Incomplete_Class。这个类类似于stdClass,失去了原有对象定义的方法。
望采纳,谢谢支持!
4. php对象:对象传入函数问题
函数在调用的时候,参数会被重新开辟内存空间的。
也就是说:
你传值穿的是$p1,但在函数test运行的时候会另开辟一个空间,复制一遍$p1,之后再函数中操作的内存都是这个函数新开辟的空间。在这个函数test消亡的时候,这个空间被释放。
所以说你这个根本就没有修改了$p1的值,只是复制了一遍,然后改了,然后删了。
如楼上说的,如果你在参数前面加上"&"符号,这个叫引用。则在参数运行的时候不会另外的开辟内存空间,而是用你的参数的内存空间。
对于函数你可以看看c或者c++语言的函数部分,他们是一样的。给你个例子:
<?php
function swap(&$a,$b){//$a$b叫形参,只是在表示第一个参数第二个参数
$a=20;
$b=10;
}
$x=10;
$y=20;
swap($x,$y);//swap中第一个参数是带引用的,被改变了值,第二个参数没有引用,并不会改变参数的值
echo "x=".$x." y=".$y;//结果 x=20 y=20
?>
5. php 函数参数问题
直接return $rows就行了
6. php调用函数时,使用某个参数的前面的参数默认值时,应该怎么处理
PHP不支持这种调用方式,你的需求是不能实现的。
如果你不能改动函数,那么你可以做一个封装。PHP的语法比较灵活,有几种替代方式你可以借鉴。这些例子都有广泛的应用。
示例一:如果参数值为null,则在函数里强制赋值为默认值
1
2
3
4
5
6
7
8
<?php
function foo2($a=1,$b=2,$c=3) {
if ($a === null) $a=1;
if ($b === null) $b=2;
if ($c === null) $c=3;
foo($a, $b, $c);
}
foo(1, null, 3);
示例二:使用数组参数
<?php
function foo3($array=array()) {
extract($array);
if (!isset($a)) $a=1;
if (!isset($b)) $b=2;
if (!isset($c)) $c=3;
foo($a, $b, $c);
}
foo(array('a'=>1, 'c'=>3));
python是支持你所说的那种调用方式的:
def foo(a=1, b=2, c=3):
pass
foo(a=1, c=3)
7. php对象调用类的函数
调用方法getdir返回字符串,但没有输出到页面显示,也没有赋值操作,不知道有什么用
方法img2data定义中的$imgfrom($imgsrc);这一句完全没看懂,在我的水平上理解这种写法是错的。
方法_imgfrom定义中getimagesize这个函数不知道来自哪儿。
总结:太混乱了。
类中访问内部属性和方法,要用$this->属性名/方法名
8. PHP函数方法里的参数可以是本函数对象吗,QueryResponse Query(Query $parameters)这个函数我一直没明白
QueryResponse Query (Query $parameters)
‖ ‖ ‖ ‖
返回值类型 方法名 参数类型 参数
9. php如何调用函数
PHP函数调用与Java/C/C++是一样的额,通过函数名(参数列表)就可以了,
举个栗子:
图中,有两处函数调用,一开始的session_start()是调用的PHP函数,validate_user($username, $password)是用户自定义函数,同样的方式调用。
10. php中在外部怎样调用函数里面的参数
你这是一个类方法么,如果是你可以用
$result=array();
functiongetResult($ret,$i=0){
foreach($retas$k=>$v){
global$resultaaa;
$tmp=array();
$tmp["col_id"]=$v["col_id"];
$tmp["col_pid"]=$v["col_pid"];
$tmp["col_path"]=$v["col_path"];
$tmp["col_title"]=$v["col_title"];
$this->result[$i++]=$tmp;
if($v['k']!=NULL){
$i=$this->getResult($v['k'],$i);
}
}
return$i;
}
$this->result;
如果不是类方法,你的$i = $this->getResult($v['k'],$i); 这一句是错误的,
你可以参考风云style的答案,或者增加一个传址参数
functiongetResult($ret,$i=0,&$result = array()){}
外面直接用$result 就是方法里面修改后的变量