php合并/推送数组到其他数组

时间:2016-02-12 09:15:15

标签: php

我不能把这件事当成简单的事。

我创建了许多这样的数组:

foreach( $terms as $term ){
  $single_attribute = array();
  $archive_link = get_term_link( $term->slug, $attribute['name'] );
  array_push( $single_attribute, $term->name, $archive_link);
}

生成许多数组如下:

Array ( [0] => attribute_1  [1] => http://domain.com/products/attribute_1/ )

我需要将这些数组中的每个数组推送/合并(不确定这里的正确命名)为一个大数组,以便最终结果如下:

Array ( [0] => Array ( [0] => attribute_1  [1] => http://domain.com/products/attribute_1 ) [1] => Array ( [0] => attribute_2 [1] => http://domain.com/products/attribute_2 ))

3 个答案:

答案 0 :(得分:2)

在每个使用空数组的迭代中定义

$single_attribute。在循环外定义数组。

$single_attribute = array();

foreach( $terms as $term ){

       $archive_link = get_term_link( $term->slug, $attribute['name'] );

       array_push( $single_attribute, array($term->name, $archive_link) );                                                                                      
}

答案 1 :(得分:1)

不使用array_push的更优雅的解决方案是:

    foreach( $terms as $term ){
      $archive_link = get_term_link( $term->slug, $attribute['name'] );
      $single_attribute[] = array($term->name, $archive_link) );
    }

$final_array[] = $single_attribute;

哪会给你预期的输出。

答案 2 :(得分:0)

根据documentation,您不应使用array_push()执行此任务:

  

注意:如果使用array_push()将一个元素添加到数组中   最好使用$ array [] =因为这样就没有开销了   调用函数。

做这样的事情:

$attributes = array();
foreach($terms as $term) {
    $archive_link = get_term_link($term->slug, $attribute['name']);
    $attributes[] = array($term->name, $archive_link);
}