2016-02-12 114 views
0

我只是不能得到這個相當簡單的事情正確。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)) 

回答

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

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

按照documentation,你不應該使用array_push()此任務:

注:如果您使用array_push()將一個元素添加到陣列中它的 更好地使用$數組[] =因爲以這種方式, 沒有任何開銷調用函數。

做這樣的事情:

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