@PeteDoherty

Как одновременно перебрать два массива?

Необходимо перебрать массив, чтобы вывести нужные значения.
$result = [
    "CARS" => [
        "car1@email.com" => ["name" => "Tesla Model X", "year" => "2012"], 
        "car2@email.com" => ["name" => "Ford Mustang","year" => "1965"],
        "car3@email.com" => ["name" => "Camaro SS","year" => "1961"],
    ],
    "BOOKS" => [
        ["bookName" => "Tesla Rules", "authorEmail" => "author1@email.com"],
        ["bookName" => "Ford Mustang Rules", "authorEmail" => "author2@email.com"],
        ["bookName" => "Camaro SS rules", "authorEmail" => "author3@email.com"],
    ],
];


Объясните каким образом здесь можно перебрать массив таким образом, чтобы извлечь из него следующее:

Книгу ... написали для машины ... в ... году, можно заказать по электронной почте ...

Каким образом можно зацепить данные из двух массивов и использовать их?
  • Вопрос задан
  • 1642 просмотра
Решения вопроса 3
0xD34F
@0xD34F
Функция array_map умеет работать более чем с одним массивом:

echo implode('<br>', array_map(function($n, $i) use(&$result) {
  return
    "Книгу ".$result['BOOKS'][$i]['bookName'].
    " написали для машины ".$n['name']." в ".$n['year'].
    " году, можно заказать по электронной почте ".$result['BOOKS'][$i]['authorEmail'];
}, $result['CARS'], array_keys($result['BOOKS'])));
Ответ написан
Комментировать
@hesy
Как вариант, ещё так можно:
$i = 0;
foreach ($result['CARS'] as $key => $value) {
    echo "Книгу ".$result['BOOKS'][$i]['bookName']." написали для машины ".$value['name']." в ".$value['year']." году, можно заказать по электронной почте ".$result['BOOKS'][$i]['authorEmail']."\n";
    $i++;
}

https://3v4l.org/lOQ95
Ответ написан
Комментировать
@0ffff0
Документация по PHP на официальном сайте https://www.php.net/manual/ru/control-structures.f...
содержит как объяснениее логики происходящего, так и множество подходящих под ваш случай примеров, как на русском так и на языке оригинала. Например Распаковка вложенных массивов с помощью list()

<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a, $b)) {
    // $a содержит первый элемент вложенного массива,
    // а $b содержит второй элемент.
    echo "A: $a; B: $b\n";
}
?>

<?php
$array = [
    [1, 2],
    [3, 4],
];

foreach ($array as list($a)) {
    // Обратите внимание на отсутствие $b.
    echo "$a\n";
}
?>
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы