Как перебирать дочерние массивы как «строки» родительского массива, в то время как (по имени) отображать значения (пар ключ / значение) в каждой «строке» - PullRequest
0 голосов
/ 17 апреля 2020

Я часами искал и пытался. Судя по документации для array () и list (), один из моих вариантов может сработать, но пока безуспешно.

Моя цель - следующий код (или некоторая исправленная версия) .. .

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Demo of Issue</title>
</head>
<body>
<?php   

$Details_Standard_Ship = Array ( 
    Array ('Book_ID' => 'c7xhGSU', 'Author_Name' => 'John Doe', 'Language' => 'English', 'Title' => 'Some Title 1'),
    Array ('Book_ID' => 'rFxW8Bo', 'Author_Name' => 'Jane Doe', 'Language' => 'Spanish', 'Title' => 'Some Title 2')
);

foreach ($Details_Standard_Ship as $Details_ITEM) {

    list($_Book_ID, $_Author_Name, $_Language, $_Title) = current($Details_ITEM); 

    echo "<p>Book_ID = " . $_Book_ID . "</p>";
    echo "<p>Author_Name = " . $_Author_Name . "</p>";
    echo "<p>Language = " . $_Language . "</p>";
    echo "<p>Title = " . $_Title . "</p>";
}
?>
</body>
</html>

... выведет этот результат:

Итерация 1 из 2 (первый дочерний массив) Book_ID: c7xhGSU, Author_Name: John Doe, Language: English, Title: Some Title 1

Итерация 2 из 2 (второй дочерний массив ) Book_ID: rFxW8Bo, Author_Name: Jane Doe, Language: Spanish, Title: Some Title 2

ПРИМЕЧАНИЕ: на родительском уровне итерации по родительскому массиву мне нужно, чтобы каждый дочерний массив был повторен один раз, давая общее количество основных итераций, которое соответствует количеству дочерних массивов. Задача состоит в том, чтобы получить все значения этого дочернего элемента при выполнении только одной итерации «родительского уровня» этого дочернего массива. Кажется, мне нужны внутренние l oop итераций при выполнении внешних l oop итераций. Я просто не знаю, как!

Ниже приведены псевдо-версии того, что я пробовал ...

foreach $Details_Standard_Ship as $Details_ITEM {
  foreach $Details_ITEM as list($_Book_ID, $_Author_Name, $_Language, $_Title) {
  // echoing here...
  }
}

и

foreach ($Details_Standard_Ship as $Details_ITEM) {
  list($_Book_ID, $_Author_Name, $_Language, $_Title) = current($Details_ITEM); 
  // echoing here...
}

и

foreach ($Details_Standard_Ship as list( $_Book_ID, $_Author_Name, $_Language, $_Title)) {
  // echoing here...
}

.. и др. c.

Я, конечно, приветствую и ценю любую помощь.

1 Ответ

3 голосов
/ 17 апреля 2020

Для достижения результата, отправленного на вопрос

Используйте

foreach(array as $key => $value)
    //do something

Весь код

$Details_Standard_Ship = Array ( 
        Array ('Book_ID' => 'c7xhGSU', 'Author_Name' => 'John Doe', 'Language' => 'English', 'Title' => 'Some Title 1'),
        Array ('Book_ID' => 'rFxW8Bo', 'Author_Name' => 'Jane Doe', 'Language' => 'Spanish', 'Title' => 'Some Title 2')
 );

 foreach ($Details_Standard_Ship as $Details_ITEM) {
      foreach ($Details_ITEM as $key => $value) {
        echo "<p> $key = $value </p>";
      }
 }

После некоторого понимания проблемы из комментариев

Используйте $array['keyname'], чтобы получить значение определенного ключа

   $Details_Standard_Ship = Array ( 
            Array ('Book_ID' => 'c7xhGSU', 'Author_Name' => 'John Doe', 'Language' => 'English', 'Title' => 'Some Title 1'),
            Array ('Book_ID' => 'rFxW8Bo', 'Author_Name' => 'Jane Doe', 'Language' => 'Spanish', 'Title' => 'Some Title 2')
     );

     foreach ($Details_Standard_Ship as $Details_ITEM) {
        echo "<p>Book_ID = " .  $Details_ITEM['Book_ID'] . "</p>";
        echo "<p>Author_Name = " . $Details_ITEM['Author_Name']  . "</p>";
        echo "<p>Language = " . $Details_ITEM['Language']  . "</p>";
        echo "<p>Title = " . $Details_ITEM['Title']  . "</p>"; 
     }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...