PHP:if语句在foreach中不起作用

PHP:if语句在foreach中不起作用,php,arrays,foreach,Php,Arrays,Foreach,我有两个数组。其中一个包含json格式的对象,每个对象有2个变量,就像数组(3){[“John”]=>string(2)“20”[“Mary”]=>string(2)“18”[“Paul”]=>string(2)“23”}。这显示了人们的姓名和年龄。这些年龄将在浏览器的表单中输入,并使用GET请求发送到服务器。另一个数组包含姓名相同但年龄不同的人的对象。每个对象都是从一个类创建的,包含它们的名称和作业。此阵列的创建方式如下: <?php class Person{

我有两个数组。其中一个包含json格式的对象,每个对象有2个变量,就像数组(3){[“John”]=>string(2)“20”[“Mary”]=>string(2)“18”[“Paul”]=>string(2)“23”}。这显示了人们的姓名和年龄。这些年龄将在浏览器的表单中输入,并使用GET请求发送到服务器。另一个数组包含姓名相同但年龄不同的人的对象。每个对象都是从一个类创建的,包含它们的名称和作业。此阵列的创建方式如下:

<?php
    class Person{
        private $name;
        private $job;
    }
    /*constructor*/
    public function __construct($name, $job){
        $this->name = $name;
        $this->job = $job;
    }
    /*getters*/
    public function getName(){
        return $this->name;
    }
    public function getOccupation(){
        return $this->job;
    }
    $john = new Person("John", "Police Officer");
    $mary = new Person("Mary", "Actress");
    $paul = new Person("Paul", "Professor");
    /* ... and more people */
    /*the second array contains all these data*/
    $people = array($john, $mary, $paul, /* more people */);
?>

如您所见,这些数组有共同的名称变量。我想做的是,在通过第一个数组的foreach中,检查第二个数组中是否出现相同的名称,如果出现,则检索该人员的职务。假设这两个数组都比这个大得多,并且数据的顺序不同。我不知道如何处理这个问题。首先,我试图检查比较本身是否有效,但它不起作用,我无法找出原因

<?php
    foreach($_GET as $name => $age){
        echo $name;
        foreach($people as $person){
            if($person->getName() == $name){
                echo $person->getOccupation();
            }
        }
    }
 ?>

这个什么也印不出来。有人能帮我做什么吗?提前谢谢你

编辑: 实际上,我正试图在HTML标记内部实现这一点

<table>
  <tr>
    <th>Name</th>
    <th>Occupation</th>
  </tr>
  <?php foreach($_GET as $name => $quantity): ?>
    <tr>
      <td><?php echo $name ?></td>
      <?php foreach($people as $person): ?>
        <?php if($person->getName() == $name): ?>
            <td><?php echo $person->getOccupation(); ?></td>
        <?php endif ?>
      <?php endforeach ?>
    </tr>
  <?php endforeach ?>
</table>

名称
职业
像这样试试

<?php
$person=array(array('name'=>'aa','occupation'=>'xx'),array('name'=>'bb','occupation'=>'yy'),array('name'=>'cc','occupation'=>'zz')); //this is your array people
//print_r($person);
$name ='cc';//assume
foreach($person as $k=>$v)
{
    if($v['name'] == $name)
    {
        echo $v['occupation'];//outputs zz which is occupation of cc matched with $name
    }
}
?>
<?php

    foreach($_GET as $name => $age){
        echo $name;
        foreach($people as $person=>$value){
            if($value['name'] == $name)
            {
                echo $value['occupation'];
            }
        }
    }
 ?>

不需要进行函数调用..因为值已经在数组中..所以像这样

<?php
$person=array(array('name'=>'aa','occupation'=>'xx'),array('name'=>'bb','occupation'=>'yy'),array('name'=>'cc','occupation'=>'zz')); //this is your array people
//print_r($person);
$name ='cc';//assume
foreach($person as $k=>$v)
{
    if($v['name'] == $name)
    {
        echo $v['occupation'];//outputs zz which is occupation of cc matched with $name
    }
}
?>
<?php

    foreach($_GET as $name => $age){
        echo $name;
        foreach($people as $person=>$value){
            if($value['name'] == $name)
            {
                echo $value['occupation'];
            }
        }
    }
 ?>


您是否检查了$person->getName()返回的内容?是否所有输出都为空,或者只是
$person->getocculation()
没有给出输出?是的$person->getName(),$person->getOccupation(),分别返回此人的姓名和职务。所以这些getter函数工作正常。另外,echo$name会正确打印人员的姓名。但当进行比较时,它不在if语句中…$person->getocculation()为空,它不在if语句中。我试图检查else语句,所有内容都转到了else部分。您的类构造函数中一定有一些错误。请您向我们展示您的代码,其中省略了部分,好吗?