PHP中关于函数中的return问题
<?phpclassPerson{private$name;private$age;private$sex;function__construct($name,$sex,...
<?php
class Person {
private $name;
private $age;
private $sex;
function __construct($name, $sex, $age="1"){
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
}
private function __isset($properName){
if($properName == "name")
return;
return isset($this->$properName);
}
private function __unset($properName){
if ($properName == "name")
return;
unset($this->$properName);
}
function speak(){
echo "Name:".$this->name.'<br>'."Age:".$this->age.'<br>'."Sex:".$this->sex.'<br>';
}
}
$csh = new Person("changsiheng", "male", "22");
var_dump(isset($csh->name));
var_dump(isset($csh->age));
var_dump(isset($csh->sex));
unset($csh->name);
unset($csh->age);
unset($csh->sex);
$csh->speak();
?>
我想问的是为什么isset中最后需要return 而unset中就不需要return呢?
可以帮我讲讲return到底是怎么回事,学的时候就有点儿晕 展开
class Person {
private $name;
private $age;
private $sex;
function __construct($name, $sex, $age="1"){
$this->name = $name;
$this->age = $age;
$this->sex = $sex;
}
private function __isset($properName){
if($properName == "name")
return;
return isset($this->$properName);
}
private function __unset($properName){
if ($properName == "name")
return;
unset($this->$properName);
}
function speak(){
echo "Name:".$this->name.'<br>'."Age:".$this->age.'<br>'."Sex:".$this->sex.'<br>';
}
}
$csh = new Person("changsiheng", "male", "22");
var_dump(isset($csh->name));
var_dump(isset($csh->age));
var_dump(isset($csh->sex));
unset($csh->name);
unset($csh->age);
unset($csh->sex);
$csh->speak();
?>
我想问的是为什么isset中最后需要return 而unset中就不需要return呢?
可以帮我讲讲return到底是怎么回事,学的时候就有点儿晕 展开
4个回答
2014-11-14
展开全部
return在自定义函数中的作用是用于给自定义函数本身返回一个值,并结束该函数的运行
比如:
function a() {
$b = 10;
}
//调用这个函数
echo a(); //这里什么都不会输出,因为函数没有值
//但改一下,加上return
function a() {
$b = 10;
return $b;
}
echo a(); //这里会输出10
function a() {
$b = 10;
return $b;
echo 100; //这行不会运行,因为return 返回值后,后面的代码将不再运行
}
展开全部
private function __isset($properName){
if($properName == "name")//if支持不写{},所以第一个return是if条件成立时执行的
return;
return isset($this->$properName);
}
上面的函数同下:
private function __isset($properName){
if($properName == "name"){
return;
}
return isset($this->$properName);
}
给你一个最简单的例子
//本次运行输出:3
$a =3;
if($a=='2')
echo 2;
echo 3;die;
//本次运行输出:23
$a =2;
if($a=='2')
echo 2;
echo 3;die;
至于if加不加大括号, 区别在于:
加大括号:执行大括号里所有的代码
不加:只执行if()底下第一行代码,
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以,按逻辑关系,当执行到一个return时,返回,后面的语句不再执行,若很一个没有执行到的话,后面的就有可能被执行了。
不过这段程序里的第二个return一点用也没有,永远不会被执行。
不过这段程序里的第二个return一点用也没有,永远不会被执行。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1.问题是函数larger的参数调用中使用了未定义的变量$b,而不是函数larger的代码编写问题。所以要避免出现larger($a,$b);
如果不确定参数数量的话,请使用func_get_args之类的函数。
2. 在执行函数larger前对参数进行检查,不要仅在函数内检查。或者参数使用数组格式。
请采纳。
如果不确定参数数量的话,请使用func_get_args之类的函数。
2. 在执行函数larger前对参数进行检查,不要仅在函数内检查。或者参数使用数组格式。
请采纳。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询