#php
#php
Вопрос:
Я пытаюсь перебрать массив с адресами электронной почты следующим образом: array (
- hi@example.com , элемент заказа 1, элемент заказа 2
- goodbye@example.com , элемент заказа 5, элемент заказа 3
- hello@example.com , элемент заказа 3, элемент заказа 2
- hi@example.com , элемент заказа 3, элемент заказа 5 )
и если есть совпадение, получите все элементы заказа для адреса. Должен вернуть:
- привет @пример, элемент заказа 1, элемент заказа 2, элемент заказа 3, элемент заказа 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() и т. Д. Ничего не работает, но, вероятно, просто ошибка новичков
Комментарии:
1. Приведенный вами пример массива не является допустимым массивом в PHP. Пожалуйста, приведите пример фактического массива, чтобы мы могли видеть каждый отдельный элемент.
2.
isset()
возвращаетtrue
илиfalse
.
Ответ №1:
Определите $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";
}
}