Chcę wygenerować za selectbox
pomocą dwóch tablic, jednej zawierającej kody krajów, a drugiej zawierającej nazwy krajów.
To jest przykład:
<?php
$codes = array('tn','us','fr');
$names = array('Tunisia','United States','France');
foreach( $codes as $code and $names as $name ) {
echo '<option value="' . $code . '">' . $name . '</option>';
}
?>
Ta metoda nie zadziałała dla mnie. Jakieś sugestie?
foreach
działa tylko na jednej tablicy naraz.Sposób, w jaki jest zbudowana tablica, umożliwia
array_combine()
utworzenie tablicy par klucz-wartość, a następnieforeach
tej pojedynczej tablicy:Lub, jak widać w innych odpowiedziach, możesz zamiast tego zakodować tablicę asocjacyjną.
źródło
Służy
array_combine()
do łączenia tablic ze sobą i iteracji wyniku.źródło
Użyj tablicy asocjacyjnej:
Uważam, że użycie tablicy asocjacyjnej jest najbardziej rozsądnym podejściem w przeciwieństwie do używania,
array_combine()
ponieważ gdy masz tablicę asocjacyjną, możesz po prostu użyćarray_keys()
lubarray_values()
uzyskać dokładnie tę samą tablicę, co wcześniej.źródło
array_combine()
już tworzy tablicę asocjacyjną, możesz chcieć być bardziej przejrzystym, jeśli chodzi o inicjowanie jej jako asocjacyjnej.array_map też wydaje się dobra do tego
Inne korzyści to:
Jeśli jedna tablica jest krótsza od drugiej, wywołanie zwrotne otrzyma
null
wartości wypełniające lukę.Do iteracji możesz użyć więcej niż 2 tablic.
źródło
Dlaczego po prostu nie skonsolidować w
wielowymiarowątablicę asocjacyjną? Wygląda na to, że robisz to źle:staje się:
źródło
Wszystko w pełni przetestowane
3 sposoby tworzenia dynamicznego menu rozwijanego z tablicy.
Spowoduje to utworzenie menu rozwijanego z tablicy i automatyczne przypisanie odpowiedniej wartości.
Metoda nr 1 (normalna tablica)
Metoda nr 2 (normalna tablica)
Metoda nr 3 (tablica asocjacyjna)
źródło
foreach działa tylko z jedną tablicą. Aby przejść przez wiele tablic, lepiej jest użyć funkcji each () w pętli while:
each () zwraca informacje o bieżącym kluczu i wartości tablicy i zwiększa wewnętrzny wskaźnik o jeden lub zwraca wartość false, jeśli osiągnął koniec tablicy. Ten kod nie byłby zależny od dwóch tablic mających identyczne klucze lub mające ten sam rodzaj elementów. Pętla kończy się, gdy jedna z dwóch tablic jest zakończona.
źródło
To zadziałało dla mnie:
źródło
Możesz użyć array_merge, aby połączyć dwie tablice, a następnie wykonać iterację po nich.
źródło
Wyjdź z tego ...
PHP 5.3+
Przed PHP 5.3
lub połączyć
w wybierz
próbny
źródło
źródło
Zamiast pętli foreach spróbuj tego (tylko wtedy, gdy twoje tablice mają taką samą długość).
źródło
Myślę, że możesz zrobić coś takiego:
$ kody = tablica ('tn', 'us', 'fr');
$ names = array ('Tunezja', 'Stany Zjednoczone', 'Francja');
Powinien również działać dla tablic asocjacyjnych.
źródło
Myślę, że najprostszym sposobem jest użycie pętli for w ten sposób:
źródło
Twój kod jest niepoprawny, ponieważ foreach tylko dla pojedynczej tablicy:
Alternatywnie, zmień to:
źródło
array_combine()
działało świetnie dla mnie podczas łączenia$_POST
wielu wartości z wielu danych wejściowych w formularzu w celu zaktualizowania ilości produktów w koszyku.źródło
Teraz możesz użyć $ a dla każdej tablicy ....
źródło
Rozwiązałem problem taki jak twój w ten sposób:
źródło
Powinieneś spróbować tego dla tablicy putting 2 w pojedynczej pętli foreach Załóżmy, że mam 2 tablice 1. $ item_nm 2. $ item_qty
źródło
Niewiele tablic można również iterować w ten sposób:
źródło
mi to pasuje
źródło