Список данных Foreach из массива - увеличивающиеся числа - PullRequest
0 голосов
/ 05 октября 2018

Я пытаюсь создать список опций из JSON-декодированной ссылки API.Пока у меня есть доступ к отсортированному API, все необходимые данные хранятся в одной переменной и могут извлекать данные из переменной с помощью

 print_r($result[0]["ORGANISATION_NAME"]);

 print_r($result[1]["ORGANISATION_NAME"]);

. Это даст мне два разных имени организации из массива.

То, что я хотел бы сделать, это поместить это в алфавитное раскрывающееся меню, но по какой-то причине я не могу на всю жизнь получить foreach для работы.Все, что нам нужно сделать, это увеличить 0,1,2,3 и т.д. до количества записей, хранящихся в базе данных.

Понятия не имею, как это сделать!

Ответы [ 2 ]

0 голосов
/ 05 октября 2018

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

  1. Изолируйте нужный столбец данных и создайте новый одномерный массив имен организаций.
  2. Сортировка имен в алфавитном порядке.

Затем вы можете использовать простой цикл foreach для создания поля выбора html.

Код ( Demo )

$result = [
    ["ORGANISATION_NAME" => "B Name"],
    ["ORGANISATION_NAME" => "D Name"],
    ["ORGANISATION_NAME" => "C Name"],
    ["ORGANISATION_NAME" => "A Name"]
];

echo "Proof of correct structure: {$result[1]["ORGANISATION_NAME"]}\n";

$org_names = array_column($result, "ORGANISATION_NAME");

sort($org_names);

var_export($org_names);  // display alphabetized array

echo "\n---\n";

echo "<select name=\"orgs\">";
foreach ($org_names as $org) {
    echo "<option>$org</option>";
}
echo "</select>";

Вывод:

Proof of correct structure: D Name
array (
  0 => 'A Name',
  1 => 'B Name',
  2 => 'C Name',
  3 => 'D Name',
)
---
<select name="orgs">
    <option>A Name</option>
    <option>B Name</option>
    <option>C Name</option>
    <option>D Name</option>
</select>
0 голосов
/ 05 октября 2018

Чтобы ответить на ваш вопрос в виде вопроса:

foreach ($results as $result) {
    for ($i = 0; $i < count($result); $i++) {
        print_r($result[$i]["ORGANISATION_NAME"]);
    }
}

Однако, почему бы не просто еще один foreach?

РЕДАКТИРОВАТЬ:

Обновление на основе новой информации:

Предполагается, что $result - это результат вашей базы данных, вот ваш новый код:

foreach ($result as $row) {
    print_r($row['ORGANISATION_NAME']);
}
...