在 PHP 中將陣列新增到陣列

Olorunfemi Akinlua 2023年1月30日
  1. 在 PHP 中使用 forforeach 迴圈將陣列新增到陣列
  2. 在 PHP 中使用 array_merge() 函式將陣列新增到陣列
  3. 在 PHP 中使用 array_push() 函式將陣列新增到陣列
在 PHP 中將陣列新增到陣列

陣列包含一系列相同資料型別的索引元素,通常用於更快的迭代和資料管理。

通常,要訪問陣列元素,你將遍歷陣列。例如,在 PHP 應用程式中,一個陣列可以儲存登錄檔單中的資料,而另一個陣列可以儲存帳戶詳細資訊部分的資料。要在一個序列中使用兩個陣列,我們需要新增兩個陣列。為此,我們需要將第二個陣列附加到第一個陣列,不同的函式表現不同。

本教程討論了在 PHP 中將兩個陣列相加形成一個陣列的不同方法。

在 PHP 中使用 forforeach 迴圈將陣列新增到陣列

將一個陣列新增到另一個陣列的一種簡單方法是選擇第二個陣列,遍歷所有元素,然後將每個元素附加到第一個陣列。但是,對於較大的陣列,這種特殊的解決方案相當長且效率低下。

$container = ["hair extension", "scissors"];
$shopping_lists = ["hair cream", "hair fryer", "makeup set"];
for($index = 0; $index < count($shopping_lists ); $index++){
    array_push($container, $shopping_lists[$index]);
}
print_r($container)

輸出:

Array
(
    [0]    hair extension
    [1]    scissors
    [2]    hair cream
    [3]    hair fryer
    [4]    makeup set
)
   true

此外,你可以將相同的方法應用於關聯陣列。但是,它具有同樣的低效率和複雜性。

$customer = array( 
    "name" => "Garner", 
    "email" => "g.abded@gmail.com", 
    "age" => 34, 
    "gender" => "female",
    "account_type" => "starter"
); 

$account = array(
    "current_course" => "Ruby Crash Course",
    "payment_channel" => "Stripe",
    "browser" => "Edge"
);

foreach($account as $key => $value) {
    $customer[$key] = $value;
}

print_r($customer)

輸出:

Array
(
    [name]    Garner
    [email]    g.abded@gmail.com
    [age]    34
    [gender]    female
    [account_type]    starter
    [current_course]    Ruby Crash Course
    [payment_channel]    Stripe
    [browser]    Edge
)
   true

在 PHP 中使用 array_merge() 函式將陣列新增到陣列

array_merge() 函式合併兩個或多個陣列,並將一個陣列的元素附加到前一個陣列的末尾,依此類推,直到最後一個陣列。此函式適用於索引、關聯和多維陣列。與前面的方法不同,這種方法建立一個新陣列並且不會追加到第一個陣列。

此方法可以與多個陣列一起使用。更詳細地說,我們可以使用這種方法將鍵值對(關聯陣列)相互新增以形成一個單獨的陣列。索引陣列也是如此。

$details = [
    "name" => "Clement",
    "email" => "clement@gmail.com",
    "gender" => "male"
];

$accounts = [
    "card" => "mastercard",
    "processor" => "stripe",
    "pro" => True
];

$account_details = array_merge($details, $accounts);

print_r($account_details);

輸出:

Array
(
    [name]    Clement
    [email]    clement@gmail.com
    [gender]    male
    [card]    mastercard
    [processor]    stripe
    [pro]    1
)
   true

以下是如何在三個陣列上使用 array_merge() 函式。

$details = [
    "name" => "Clement",
    "email" => "clement@gmail.com",
    "gender" => "male"
];
$accounts = [
    "card" => "mastercard",
    "processor" => "stripe",
    "pro" => True
];
$functions = [
    "movies" => "inferno"
];
$account_details = array_merge($details, $accounts, $functions);
print_r($account_details);

輸出:

Array
(
    [name]    Clement
    [email]    clement@gmail.com
    [gender]    male
    [card]    mastercard
    [processor]    stripe
    [pro]    1
    [movies]    inferno
)
   true

此方法相容所有 PHP 7.0 及以上版本。

在 PHP 中使用 array_push() 函式將陣列新增到陣列

array_push() 函式將陣列推送到陣列的末尾,就像堆疊 (LIFO)。你可以使用【此功能】將索引陣列新增到關聯陣列中,它會自動為推送到關聯陣列的索引陣列建立一個數字索引。如果推送兩個索引陣列,第一個索引陣列儲存數字索引 0,第二個索引陣列儲存數字索引 1。對於推送的 N 個陣列,數字索引將為 N-1

此外,你可以將索引陣列推送到索引陣列,將關聯陣列推送到關聯陣列。

$basic_data = ['Location' => 'Mumbai', 'Tier' => 'Three'];
$tools = ['Geology', 'Machine Learning'];
$BD_Tools = array_push($basic_data, $tools);

print_r($basic_data);

輸出:

Array
(
    [Location]    Mumbai
    [Tier]    Three
    [0]    Array
        (
            [0]    Geology
            [1]    Machine Learning
        )
)
   true

此外,使用 array_push() 函式中的 ... 運算子允許被推入的陣列中的所有元素都有自己的數字索引,而不是一個為所有的。

$basic_data = ['Location' => 'Mumbai', 'Tier' => 'Three'];
$tools = ['Geology', 'Machine Learning'];
$BD_Tools = array_push($basic_data, ...$tools);

print_r($basic_data);

輸出:

Array
(
    [Location]    Mumbai
    [Tier]    Three
    [0]    Geology
    [1]    Machine Learning
)
   true

對於關聯陣列推送操作,不能使用 ... 運算子,因為它會引發錯誤。

TypeError: array_push() 不接受未知的命名引數 null

因此,對兩個或更多陣列使用 array_push() 函式的唯一方法是通過預設方式。

$basic_data = ['Location' => 'Mumbai', 'Tier' => 'Three'];
$tools = ['Course' => 'Geology', 'Approach' => 'Machine Learning'];
$BD_Tools = array_push($basic_data, $tools);

print_r($basic_data);

輸出:

Array
(
    [Location]    Mumbai
    [Tier]    Three
    [0]    Array
        (
            [Course]    Geology
            [Approach]    Machine Learning
        )

)
   true
Olorunfemi Akinlua avatar Olorunfemi Akinlua avatar

Olorunfemi is a lover of technology and computers. In addition, I write technology and coding content for developers and hobbyists. When not working, I learn to design, among other things.

LinkedIn