php - 循环并匹配重复项
问题描述
我正在尝试使用这样的电子邮件地址遍历数组:数组(
- hi@example.com,订单项 1,订单项 2
- goodbye@example.com,订单项 5,订单项 3
- hello@example.com,订单项 3,订单项 2
- hi@example.com,订单项 3,订单项 5)
如果匹配,则获取该地址的所有订单项。应该返回:
- hi@example, orderitem 1, orderitem, 2, orderitem 3, orderitem 5
- 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() 等。没有任何效果,但可能只是初学者的错误
解决方案
$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";
}
}
推荐阅读
- wpf - 设置 WPFToolkit AutoCompleteBox
- web-applications - 如何在移动设备上使用身份验证器应用程序期间保留 Web 应用程序中的状态
- c++ - return 语句中的 C++ constexpr 函数
- tx-news - tx_news n:link 不想用 config.absPrefix 建立绝对链接
- php - recaptcha 身份验证后如何将 POST 数据传递到外部站点?
- spring - 打包操作是否构建项目?
- c# - PushButtonState.Default 和 PushButtonState.Normal 之间的逻辑区别是什么?
- css - 如何在引导程序中正确对齐?
- c# - 如何在运行时知道哪个项目正在使用另一个项目
- amazon-s3 - 如何在烧瓶中读取文件模式窗口