遍历并匹配重复项

时间:2020-10-28 15:35:08

标签: php

我正在尝试遍历具有以下电子邮件地址的数组: 数组(

  1. hi@example.com,订单项1,订单项2
  2. goodbye@example.com,订单项5,订单项3
  3. hello@example.com,订单项3,订单项2
  4. hi@example.com,订单项3,订单项5 )

,如果有匹配项,则获取地址的所有订单项。 应该返回:

  1. hi @ example, 订单项1,订单项,2,订单项3,订单项5
  2. goodbye@example.com,订单项5,订单项3

以此类推。

        foreach ($orders as $key => $value) { 
        $email = $value->getEmail(); 

        $emailArr = [$email];
        var_dump($emailArr);

        if(isset($this->$email) == $emailArr) {

        

    //   if(isset($email) == $email) {
    //         // echo '<div>' . $email . '</div>';
            $orderItems = $value->getOrderItems();
            foreach($orderItems as $item) {
                echo '<div>string is match</div>';
                echo '<div>' . $item->getName() . '</div>';
            }
         } else {
            echo '<div>nothing to show</div>';

我尝试了许多不同的方法,但是似乎没有进行准确的比较/匹配。这是一个练习,所有内容都经过硬编码,但仍然可以正常工作。

我对PHP还是陌生的,但是却在Webb上搜索并尝试了in_array(),trim()等。什么都行不通,但可能只是一个初学者的错误

1 个答案:

答案 0 :(得分:0)

在循环外定义$emailArr。然后将每个项目附加到它。

$emailArr = array(); // define here
foreach ($orders as $key => $value) { 
    $email = $value->getEmail();
    if(in_array($email, $emailArr)) {
          // skip or do something else
        echo "Matched";
    }
    else {
        array_push($emailArr, $email);
        // do other stuff
        echo "added new";
    }
}