Создание Select из многомерного массива - PullRequest
0 голосов
/ 23 февраля 2019

Итак, у меня есть массив из запроса к базе данных, он выглядит примерно так:

Array (

[0] => Array
    (
        [0] => 1
        [1] => Name1
    )

[1] => Array
    (
        [0] => 3
        [1] => Name2
    )

[2] => Array
    (
        [0] => 4
        [1] => Name3
    )

Я пытаюсь создать выбор из этого (он имеет +50массивы, не только 2), и я попытался сделать это:

<select name="client" onchange="this.form.submit()">
                <option value="" disabled selected>--client--</option>
                <?php
                    for ($i = 0; $i < count($idnameCli); $i++) { 
                        echo "<option value='$idnameCli[$i][1]'>$idnameCli[$i][0] $idnomCli[$i][1] </option>";
                    }
                ?>
</select>

Проблема в том, что он не берет второй [], поэтому вместо «3Name2» отображается «Array [0] Array [1]».Я пробовал пару вещей, таких как создание переменных:

$ id = "0";// $ id = "[0]";

Все еще не работает.

Как в этом случае я должен вызывать массив в массиве?

Ответы [ 3 ]

0 голосов
/ 23 февраля 2019

Привет и добро пожаловать в Stackoverflow,

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

<select>
<?php for($i = 0; $i<sizeof($prova); $i++){
    echo "<option value=\"".$arr[$i][0]."\">".$arr[$i][0]."-".$arr[$i][1]."</option> ";
} ?>
</select>
0 голосов
/ 23 февраля 2019

См. руководство: строковые операторы

Когда вы пишете:

echo "<option value='$idnameCli[$i][1]'> ...

Это похоже на то, что вы хотите установить значение для этой опции, которая является строкой '$idnameCli[$i][1]';если бы вы хотели, чтобы значение было "johnny", вы бы написали "<option value='johnny'>

В PHP вы объединяете строки и переменные с помощью "."как:

"<option value='" . $idnameCli[$i][1] . "'> ...

А также в вашем случае две переменные рядом друг с другом (здесь с пробелом между ними):

echo "<option value='" . $idnameCli[$i][1] . "'>" . $idnameCli[$i][0] . " " . $idnomCli[$i][1] . "</option>"; 
0 голосов
/ 23 февраля 2019

Это не работает, потому что вы должны использовать кавычки или избегать их.Вы можете сделать это просто используя implode () ,

<select name="client" onchange="this.form.submit()">
                <option value="" disabled selected>--client--</option>
                <?php
                    for ($i = 0; $i < count($idnameCli); $i++) { 
                        echo "<option value='".$idnameCli[$i][1]."'>". implode('',$idnameCli[$i]) ."</option>";
                    }
                ?>
</select>

DEMO: https://3v4l.org/TATGZ

...