首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Foreach不在类方法中工作

Foreach不在类方法中工作
EN

Stack Overflow用户
提问于 2016-12-02 11:37:53
回答 5查看 461关注 0票数 0

我倾向于PHP5类,比如我是新加入的。但是我尝试使用foreach循环在Class Methods中获取人的性别,但是它只显示第一个人的权利,而不是显示第二个人的权利,第三个人,等等。

这是我的代码:

代码语言:javascript
复制
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 />";

这就是结果:

代码语言:javascript
复制
Hamza Nisar
Male
Ibrar Ahmed
Female

它必须显示男性也为第二个人

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-12-02 12:26:52

这些答案都没有告诉为什么您的代码不能工作。当first_name =“易卜拉欣”时,让我们遵循foreach的逻辑:

代码语言:javascript
复制
$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循环。你可以这样做:

代码语言:javascript
复制
$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;
票数 1
EN

Stack Overflow用户

发布于 2016-12-02 11:53:21

使用foreach循环并检查每一种可能性似乎是实现这一目标的一种奇怪的方法。我建议将foreach函数替换为in_array函数,当在if语句中使用该函数时,可以使用更少的代码来完成相同的任务。

示例:

代码语言:javascript
复制
<?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 />";

?>
票数 2
EN

Stack Overflow用户

发布于 2016-12-02 11:46:39

代码语言:javascript
复制
<?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 />";
?>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40931349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档