/ / Create array multidimensional from foreach em uma função - php, arrays, array multidimensional, foreach

Criar array multidimensional de foreach em uma função - php, arrays, array multidimensional, foreach

Eu quero criar array multidimensional usando foreach em uma função.

Aqui está o meu código:

$colors = ["red", "green", "blue"];
$sizes = ["s", "m", "l", "xl"];
$materials = ["cotton", "silk"];
foreach ( $colors as $color ){
foreach ( $sizes as $size ){
foreach ( $materials as $material ){
$result[] = "{$color}:{$size}:{$material}";
}
}
}

A saída deve ser assim:

Array
(
[0] => red:s:cotton
[1] => red:s:silk
[2] => red:m:cotton
[3] => red:m:silk
[4] => red:l:cotton
[5] => red:l:silk
[6] => red:xl:cotton
[7] => red:xl:silk
[8] => green:s:cotton
[9] => green:s:silk
[10] => green:m:cotton
[11] => green:m:silk
[12] => green:l:cotton
[13] => green:l:silk
[14] => green:xl:cotton
[15] => green:xl:silk
[16] => blue:s:cotton
[17] => blue:s:silk
[18] => blue:m:cotton
[19] => blue:m:silk
[20] => blue:l:cotton
[21] => blue:l:silk
[22] => blue:xl:cotton
[23] => blue:xl:silk
)

Sim, de fato eu tenho o que quero. Mas e se eu quiser adicionar mais matrizes? Loopar uma matriz em um loop em um loop em um loop não parece conveniente.

Existe uma função como merge_it( $arr1, $arr2, $arr3, ... ) Então, faz todos os trabalhos para mim?

Respostas:

0 para resposta № 1

Caso as matrizes tenham o mesmo tamanho, basta fazer isso:

http://pastebin.com/50zD6KnW

Referência não é necessária, pois é só ler as matrizes de qualquer maneira. Eu não tenho benchmarking de grandes matrizes quando se trata deste assunto, mas no seu caso, deve funcionar muito bem.


0 para resposta № 2

Resposta curta, não. Existe uma função PHP para mesclar matrizes, array_merge, que uniões tantas matrizes como você usa comoargumentos. No entanto, tenha em mente que você não está criando matrizes multidimensionais, em vez disso, está criando um array unidimensional com valores concatenados. E a única maneira de adicionar valores a serem concatenados é iterando e concatenando, em seguida, empurrando o valor composto para a matriz esperada.