2019年3月20日 星期三
array_walk — 使用用戶自定義函數(shù)對數(shù)組中的每個(gè)元素做回調(diào)處理
array_walk( array&$array,callable$callback[,mixed$userdata=NULL] ) : bool
將用戶自定義函數(shù)funcname應(yīng)用到array數(shù)組中的每個(gè)單元伞梯。
array_walk()不會(huì)受到array內(nèi)部數(shù)組指針的影響取逾。array_walk()會(huì)遍歷整個(gè)數(shù)組而不管指針的位置。
典型情況下callback接受兩個(gè)參數(shù)吊骤。array參數(shù)的值作為第一個(gè),鍵名作為第二個(gè)靴姿。
Note:
如果callback需要直接作用于數(shù)組中的值力麸,則給callback的第一個(gè)參數(shù)指定為引用。這樣任何對這些單元的改變也將會(huì)改變原始數(shù)組本身炉奴。
Note:
參數(shù)數(shù)量超過預(yù)期逼庞,傳入內(nèi)置函數(shù) (例如strtolower()),? ? ? ? 將拋出警告瞻赶,所以不適合當(dāng)做funcname赛糟。
只有array的值才可以被改變,用戶不應(yīng)在回調(diào)函數(shù)中改變該數(shù)組本身的結(jié)構(gòu)砸逊。例如增加/刪除單元璧南,unset? 單元等等。如果array_walk()作用的數(shù)組改變了师逸,則此函數(shù)的的行為未經(jīng)定義穆咐,且不可預(yù)期。
如果提供了可選參數(shù)userdata字旭,將被作為第三個(gè)參數(shù)傳遞給? callbackfuncname对湃。
```
<?php
$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");
function test_alter(&$value, $key, $prefix)
{
? ? $value = "$prefix: $value";
}
function test_print($value, $key)
{
? ? echo "$key. $value<br />\n";
}
echo "Before ...:<hr/>";
array_walk($fruits, 'test_print');
echo '<hr/>';
array_walk($fruits, 'test_alter', 'fruit');
echo "... and after:<hr/>";
//改變原始數(shù)組本身
array_walk($fruits, 'test_print');
```
輸出
輸出array_merge — 合并一個(gè)或多個(gè)數(shù)組
array_merge( array$array1[, array$...] ) : array