php 如何将 2 个数组连接成一个数组
php How to concatenate 2 arrays in one array
我有以下包含 2 个元素的数组:
$attribute_metric = array(2)
{
[0]=>
array(2) {
[0]=>
string(5) "white"
[1]=>
string(6) " Black"
}
[1]=>
array(3) {
[0]=>
string(1) "S"
[1]=>
string(2) " L"
[2]=>
string(2) " M"
}
}
并且我想以一种方式连接它的元素,从而得到一个包含 6 个元素的数组
array(6) {
[0]=>
string(8) "white, S"
[1]=>
string(8) "white, L"
[2]=>
string(8) "white, M"
[3]=>
string(8) "Black, S"
[4]=>
string(8) "Black, L"
[5]=>
string(8) "Black, M"
}
我尝试了以下方法,但没有用:
$size = 1;
foreach ($attribute_metric as $key => $value) {
$size = $size * sizeof($value);
}
foreach ($attribute_metric as $key => $value) {
if($key > 0){
foreach ($attribute_metric[0] as $subkey => $subvalue) {
array_push($subvalue,$value);
}
}
}
$array1= $attribute_metric[0]; //['white','black']
$array2= $attribute_metric[1]; // ['S', 'L', 'M']
$resultArray = [];
foreach ($array1 as $color){
foreach ($array2 as $size){
$resultArray[] = $color . ', ' . $size;
}
}
print_r($resultArray);
结果
Array
(
[0] => white, S
[1] => white, L
[2] => white, M
[3] => black, S
[4] => black, L
[5] => black, M
)
如果原始数组不是太大,则使用嵌套循环可以生成所需的输出。
$colours=array('white','black');
$sizes=array('s','m','l');
$out=array();
foreach( $colours as $colour ){
foreach( $sizes as $size ){
$out[]=$colour.', '.$size;
}
}
print_r( $out );
试试这个
<?php
$list = array(array('white','Black'), array('S','L','M'));
$result = array();
foreach ($list[0] as $k) {
foreach ($list[1] as $t) {
$result[] = $k.','.$t;
}
}
var_dump($result);
?>
为了完整起见,如果你只想使用数组函数来完成:
$output = array_reduce(array_map(function($a) use($attribute_metric) {
return array_map(function($b) use($a) { return $a . ', ' . $b; }, $attribute_metric[1]);
}, $attribute_metric[0]), 'array_merge', []);
我有以下包含 2 个元素的数组:
$attribute_metric = array(2)
{
[0]=>
array(2) {
[0]=>
string(5) "white"
[1]=>
string(6) " Black"
}
[1]=>
array(3) {
[0]=>
string(1) "S"
[1]=>
string(2) " L"
[2]=>
string(2) " M"
}
}
并且我想以一种方式连接它的元素,从而得到一个包含 6 个元素的数组
array(6) {
[0]=>
string(8) "white, S"
[1]=>
string(8) "white, L"
[2]=>
string(8) "white, M"
[3]=>
string(8) "Black, S"
[4]=>
string(8) "Black, L"
[5]=>
string(8) "Black, M"
}
我尝试了以下方法,但没有用:
$size = 1;
foreach ($attribute_metric as $key => $value) {
$size = $size * sizeof($value);
}
foreach ($attribute_metric as $key => $value) {
if($key > 0){
foreach ($attribute_metric[0] as $subkey => $subvalue) {
array_push($subvalue,$value);
}
}
}
$array1= $attribute_metric[0]; //['white','black']
$array2= $attribute_metric[1]; // ['S', 'L', 'M']
$resultArray = [];
foreach ($array1 as $color){
foreach ($array2 as $size){
$resultArray[] = $color . ', ' . $size;
}
}
print_r($resultArray);
结果
Array
(
[0] => white, S
[1] => white, L
[2] => white, M
[3] => black, S
[4] => black, L
[5] => black, M
)
如果原始数组不是太大,则使用嵌套循环可以生成所需的输出。
$colours=array('white','black');
$sizes=array('s','m','l');
$out=array();
foreach( $colours as $colour ){
foreach( $sizes as $size ){
$out[]=$colour.', '.$size;
}
}
print_r( $out );
试试这个
<?php
$list = array(array('white','Black'), array('S','L','M'));
$result = array();
foreach ($list[0] as $k) {
foreach ($list[1] as $t) {
$result[] = $k.','.$t;
}
}
var_dump($result);
?>
为了完整起见,如果你只想使用数组函数来完成:
$output = array_reduce(array_map(function($a) use($attribute_metric) {
return array_map(function($b) use($a) { return $a . ', ' . $b; }, $attribute_metric[1]);
}, $attribute_metric[0]), 'array_merge', []);