我倾向于PHP5类,比如我是新加入的。但是我尝试使用foreach循环在Class Methods中获取人的性别,但是它只显示第一个人的权利,而不是显示第二个人的权利,第三个人,等等。
这是我的代码:
class Person{
// atteributes or property of class
var $first_name;
var $last_name;
var $legs = 2;
var $hand = 2;
var $gender;
function say_hello(){
echo "Hello inside the class from " . get_class($this) . "<br />";
}
// full name function
function full_name(){
echo $this->first_name ." ". $this->last_name;
}
// Gender
function gender(){
$names = array("Hamza","Ali","Ibrar","Muqeet","Hassan","Umer","Shaveer");
foreach($names as $name){
if($this->first_name == $name){
echo $this->gender = "Male";
break;
}else{
echo $this->gender = "Female";
break;
}
}
}
}
$person = new Person();
$person->first_name = "Hamza";
$person->last_name = "Nisar";
$person->full_name();
echo "<br />";
$person->gender();
echo "<br />";
/*---------------------*/
$person2 = new Person();
$person2->first_name = "Ibrar";
$person2->last_name = "Ahmed";
$person2->full_name();
echo "<br />";
$person2->gender();
echo "<br />";这就是结果:
Hamza Nisar
Male
Ibrar Ahmed
Female它必须显示男性也为第二个人
发布于 2016-12-02 12:26:52
这些答案都没有告诉为什么您的代码不能工作。当first_name =“易卜拉欣”时,让我们遵循foreach的逻辑:
$names = array("Hamza","Ali","Ibrar","Muqeet","Hassan","Umer","Shaveer");
foreach($names as $name){
if($this->first_name == $name){
echo $this->gender = "Male";
break;
}else{
echo $this->gender = "Female";
break;
}
}Loop1: IF语句是错误的,如"Ibrar“!== "Hamza”。因此,使用的是其他的,它打印女性和打破。
其他的答案是好的解决办法。但是,假设您仍然希望使用foreach循环。你可以这样做:
$this->gender = 'Female';
$names = array("Hamza","Ali","Ibrar","Muqeet","Hassan","Umer","Shaveer");
foreach($names as $name){
if ($this->first_name === $name) {
$this-gender = 'Male';
break;
}
}
echo $this->gender;发布于 2016-12-02 11:53:21
使用foreach循环并检查每一种可能性似乎是实现这一目标的一种奇怪的方法。我建议将foreach函数替换为in_array函数,当在if语句中使用该函数时,可以使用更少的代码来完成相同的任务。
示例:
<?php
class Person{
// atteributes or property of class
var $first_name;
var $last_name;
var $legs = 2;
var $hand = 2;
var $gender;
function say_hello(){
echo "Hello inside the class from " . get_class($this) . "<br />";
}
// full name function
function full_name(){
echo $this->first_name ." ". $this->last_name;
}
// Gender
function gender(){
$names = array("Hamza","Ali","Ibrar","Muqeet","Hassan","Umer","Shaveer");
if(in_array($this->first_name, $names)){
echo $this->gender = "Male";
}
else {
echo $this->gender = "Female";
}
}
}
$person = new Person();
$person->first_name = "Hamza";
$person->last_name = "Nisar";
$person->full_name();
echo "<br />";
$person->gender();
echo "<br />";
/*---------------------*/
$person2 = new Person();
$person2->first_name = "Ibrar";
$person2->last_name = "Ahmed";
$person2->full_name();
echo "<br />";
$person2->gender();
echo "<br />";
?>发布于 2016-12-02 11:46:39
<?php
class Person{
// atteributes or property of class
var $first_name;
var $last_name;
var $legs = 2;
var $hand = 2;
var $gender;
function say_hello(){
echo "Hello inside the class from " . get_class($this) . "<br />";
}
// full name function
function full_name(){
echo $this->first_name ." ". $this->last_name;
}
// Gender
function gender($newname){
$names = array("Hamza","Ali","Ibrar","Muqeet","Hassan","Umer","Shaveer");
if(in_array($this->first_name, $names)){
echo $this->gender = "Male";
}else{
echo $this->gender = "Female";
}
}
}
$person = new Person();
$person->first_name = "Hamza";
$person->last_name = "Nisar";
$person->full_name();
echo "<br />";
$person->gender($person->first_name);
echo "<br />";
/*---------------------*/
$person2 = new Person();
$person2->first_name = "Ibrar";
$person2->last_name = "Ahmed";
$person2->full_name();
echo "<br />";
$person2->gender($person2->first_name);
echo "<br />";
?>https://stackoverflow.com/questions/40931349
复制相似问题