【问题标题】:php How to concatenate 2 arrays in one arrayphp如何在一个数组中连接2个数组
【发布时间】:2017-01-23 04:54:32
【问题描述】:

我有以下包含 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);   
        }
    }
}

【问题讨论】:

    标签: php arrays loops foreach associative-array


    【解决方案1】:
    $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
    )
    

    【讨论】:

    • $resultArray[] = $color . ', ' . $size; -> 注意“逗号”。
    【解决方案2】:

    如果原始数组不是太大,那么使用嵌套循环可以让您生成所需的输出。

    $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 );
    

    【讨论】:

      【解决方案3】:

      试试这个

      <?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);
      ?>
      

      【讨论】:

      • 非常感谢您的帮助..我会选择它作为最佳答案,因为我的数组不能总是颜色和大小..所以这种方式使它更具动态性。
      【解决方案4】:

      为了完整起见,如果您只想使用数组函数:

      $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', []);
      

      【讨论】:

        猜你喜欢
        • 2011-02-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-23
        • 1970-01-01
        • 2022-12-02
        • 2014-04-01
        相关资源
        最近更新 更多