Eu quero gerar um selectbox
usando duas matrizes, uma contendo os códigos dos países e outra contendo os nomes dos países.
Isto é um exemplo:
<?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>';
}
?>
Este método não funcionou para mim. Alguma sugestão?
foreach
opera em apenas um array por vez.Da maneira como sua matriz está estruturada, você pode
array_combine()
colocá-los em uma matriz de pares de valores-chave e, em seguida,foreach
essa única matriz:Ou, como visto nas outras respostas, você pode codificar permanentemente uma matriz associativa.
fonte
Use
array_combine()
para fundir os arrays e iterar o resultado.fonte
Use uma matriz associativa:
Eu acredito que usar um array associativo é a abordagem mais sensata ao invés de usar
array_combine()
porque uma vez que você tem um array associativo, você pode simplesmente usararray_keys()
ouarray_values()
obter exatamente o mesmo array que você tinha antes.fonte
array_combine()
já produz uma matriz associativa, você pode querer ser mais claro sobre inicializá- la como associativa.array_map parece bom para isso também
Outros benefícios são:
Se uma matriz for menor que a outra, o retorno de chamada receberá
null
valores para preencher a lacuna.Você pode usar mais de 2 arrays para iterar.
fonte
Por que não apenas consolidar em uma matriz associativa
multidimensional? Parece que você está agindo errado:torna-se:
fonte
Totalmente testado
3 maneiras de criar um menu suspenso dinâmico de uma matriz.
Isso criará um menu suspenso a partir de uma matriz e atribuirá automaticamente seu respectivo valor.
Método # 1 (Matriz Normal)
Método # 2 (matriz normal)
Método # 3 (matriz associativa)
fonte
foreach só funciona com um único array. Para percorrer vários arrays, é melhor usar a função each () em um loop while:
each () retorna informações sobre a chave e o valor atuais da matriz e incrementa o ponteiro interno em um, ou retorna falso se tiver alcançado o final da matriz. Este código não seria dependente de duas matrizes tendo chaves idênticas ou tendo o mesmo tipo de elementos. O loop termina quando uma das duas matrizes é concluída.
fonte
Isso funcionou para mim:
fonte
Você pode usar array_merge para combinar dois arrays e, em seguida, iterar sobre eles.
fonte
Caminhe ...
PHP 5.3+
Antes do PHP 5.3
ou combinar
em selecionar
demo
fonte
fonte
Em vez de loop foreach, tente isso (somente quando seus arrays têm o mesmo comprimento).
fonte
Acho que você pode fazer algo como:
$ codes = array ('tn', 'us', 'fr');
$ names = array ('Tunísia', 'Estados Unidos', 'França');
Ele também deve funcionar para matrizes associativas.
fonte
Acho que a maneira mais simples é usar o loop for desta forma:
fonte
Seu código como este está incorreto porque foreach apenas para uma única matriz:
Alternativa, mude para isto:
fonte
array_combine()
funcionou muito bem para mim ao combinar$_POST
vários valores de várias entradas de formulário em uma tentativa de atualizar as quantidades de produtos em um carrinho de compras.fonte
Agora você pode usar $ a para cada array ....
fonte
Resolvi um problema como o seu desta forma:
fonte
Você deve tentar isso para colocar 2 vetores em um único loop foreach. Suponha que eu tenha 2 vetores 1. $ item_nm 2. $ item_qty
fonte
Alguns arrays também podem ser iterados desta forma:
fonte
funciona para mim
fonte