在PHP 中, array_column和array_chunk是非常常用的數組操作函數。 array_column可以提取二維數組中某一列的值,而array_chunk則可以將數組分割成多個小塊。如果我們需要根據數組的長度來動態設置array_chunk的第二個參數,結合array_column的使用,可以幫助我們更加靈活地處理數組數據。
array_column($array, $column_key, $index_key) :從二維數組中提取指定列的值。它接收三個參數:
$array :原始數組。
$column_key :需要提取的列名或列索引。
$index_key :可選,表示索引列。如果不指定,則返回平舖的數組。
array_chunk($array, $size, $preserve_keys = false) :將一個數組切分成多個小數組,每個小數組包含$size個元素。返回一個多維數組。
$array :原始數組。
$size :每個子數組的大小。
$preserve_keys :是否保留原始數組的鍵。
假設我們有一個多維數組,每個元素代表一個人的信息(如姓名、年齡、性別等)。我們可以使用array_column來提取其中的一列數據。比如:
$people = [
['name' => 'Alice', 'age' => 25, 'gender' => 'female'],
['name' => 'Bob', 'age' => 30, 'gender' => 'male'],
['name' => 'Charlie', 'age' => 35, 'gender' => 'male'],
['name' => 'David', 'age' => 28, 'gender' => 'male']
];
// 提取 'name' 列
$names = array_column($people, 'name');
print_r($names);
輸出:
Array
(
[0] => Alice
[1] => Bob
[2] => Charlie
[3] => David
)
如上所示, array_column提取了people數組中的name列。
現在假設我們希望將數組分割成多個子數組,子數組的大小根據原數組的長度動態設置。例如,如果數組的長度較大,每個子數組的大小可以設置為10;如果數組的長度較小,則每個子數組可以設置為5。我們可以使用count()函數來獲取數組的長度,並根據這個長度來決定array_chunk的第二個參數。
$names = array_column($people, 'name');
$array_length = count($names);
// 動態設置每個子數組的大小
$chunk_size = ($array_length > 3) ? 2 : 1; // 如果數組長度大於3,則每個子數組包含2個元素,否則包含1個元素
$chunked = array_chunk($names, $chunk_size);
print_r($chunked);
輸出(假設數組長度為4):
Array
(
[0] => Array
(
[0] => Alice
[1] => Bob
)
[1] => Array
(
[0] => Charlie
[1] => David
)
)
如上所示,根據array_column提取的names數組的長度,我們動態設置了每個子數組的大小。
如果在實際開發中,你需要處理帶有URL 的數據,並想將這些URL 的域名統一替換為m66.net ,可以使用str_replace來實現:
$urls = [
'https://www.example.com/page1',
'https://www.example.com/page2',
'https://www.example.com/page3',
];
// 使用 str_replace 替換域名
$updated_urls = array_map(function($url) {
return preg_replace('/https?:\/\/[^\/]+/', 'https://m66.net', $url);
}, $urls);
print_r($updated_urls);
輸出: