
批改狀態(tài):合格
老師批語(yǔ):這幾個(gè)回調(diào)函數(shù)學(xué)好了, 可以寫(xiě)出非常棒的代碼
語(yǔ)法:array_column(array,column_key,index_key)
array:必需。指定要使用的多維數(shù)組(記錄集)
column_key:必需。需要返回值的列
index_key:可選。作為返回?cái)?shù)組的索引/鍵的列
返回值:返回一個(gè)數(shù)組,數(shù)組的值為輸入數(shù)組中某個(gè)單一列的值
$arr = [
['name'=>'小明', 'sex'=>'男', 'age'=>18 ],
['name'=>'小紅', 'sex'=>'女', 'age'=>16 ],
['name'=>'小王', 'sex'=>'男', 'age'=>17 ]
];
$newArr = array_column($arr, 'sex', 'name');
echo '<pre>';
print_r($newArr);
echo '</pre>';
語(yǔ)法:array_replace_recursive(array1,array2,array3…)
array1:必需。指定一個(gè)數(shù)組
array2:可選。指定一個(gè)要替換 array1 的值的數(shù)組
array3:可選。指定多個(gè)要替換 array1 和 array2, … 的值的數(shù)組。后面數(shù)組的值將覆蓋之前數(shù)組的值
返回值:返回被替換的數(shù)組,如果發(fā)生錯(cuò)誤則返回 NULL
$arr1 = [
['name'=>'小明', 'sex'=>'男', 'age'=>18 ],
['name'=>'小紅', 'sex'=>'女', 'age'=>16 ],
['name'=>'小王', 'sex'=>'男', 'age'=>17 ]
];
$arr2 = [
['name'=>'小茜', 'sex'=>'女', 'age'=>17 ],
['name'=>'小華', 'sex'=>'男', 'age'=>19 ],
['name'=>'小趙', 'sex'=>'男', 'age'=>18 ]
];
$newArr1 = array_replace_recursive($arr1, $arr2);
echo '<pre>';
print_r($newArr1);
echo '</pre>';
語(yǔ)法:array_intersect(array1,array2,array3…)
array1:必需。與其他數(shù)組進(jìn)行比較的第一個(gè)數(shù)組
array2:必需。與第一個(gè)數(shù)組進(jìn)行比較的數(shù)組
array3:可選。與第一個(gè)數(shù)組進(jìn)行比較的其他數(shù)組
返回值:返回一個(gè)交集數(shù)組,該數(shù)組包括了所有在被比較的數(shù)組(array1)中,同時(shí)也在任何其他參數(shù)數(shù)組(array2 或 array3 等等)中的鍵值
$arr3 = ['name'=>'小明', 'sex'=>'男', 'age'=>18 ];
$arr4 = ['name'=>'小紅', 'sex'=>'女', 'age'=>18 ];
$newArr2 = array_intersect($arr3, $arr4);
echo '<pre>';
print_r($newArr2);
echo '</pre>';
語(yǔ)法:array_diff(array1,array2,array3…)
array1:必需。與其他數(shù)組進(jìn)行比較的第一個(gè)數(shù)組
array2:必需。與第一個(gè)數(shù)組進(jìn)行比較的數(shù)組
array3:可選。與第一個(gè)數(shù)組進(jìn)行比較的其他數(shù)組
返回值:返回一個(gè)差集數(shù)組,該數(shù)組包括了所有在被比較的數(shù)組(array1)中,但是不在任何其他參數(shù)數(shù)組(array2 或 array3 等等)中的值
$arr5 = ['name'=>'小明', 'sex'=>'男', 'age'=>18, 'email'=>'xiaoming@qq.com' ];
$arr6 = ['name'=>'小紅', 'sex'=>'女', 'age'=>18 ];
$arr7 = ['name'=>'小趙', 'sex'=>'男', 'age'=>18 ];
$newArr3 = array_diff($arr5, $arr6, $arr7);
echo '<pre>';
print_r($newArr3);
echo '</pre>';
語(yǔ)法:array_merge(array1,array2,array3…)
array1:必需。規(guī)定數(shù)組
array2:可選。規(guī)定數(shù)組
array3:可選。規(guī)定數(shù)組
返回值:返回合并的數(shù)組
$arr8 = ['name'=>'小明', 'sex'=>'男', 'age'=>18 ];
$arr9 = ['phone'=>'13785459358', 'email'=>'xiaoming@qq.com', 'address'=>'北京'];
$newArr4 = array_merge($arr8, $arr9);
echo '<pre>';
print_r($newArr4);
echo '</pre>';
語(yǔ)法:array_chunk(array,size,preserve_keys)
array1:必需。規(guī)定要使用的數(shù)組
size:必需。一個(gè)整數(shù),規(guī)定每個(gè)新數(shù)組塊包含多少個(gè)元素
preserve_keys:可選。布爾值,rue - 保留原始數(shù)組中的鍵名,false - 默認(rèn)。每個(gè)新數(shù)組塊使用從零開(kāi)始的索引
返回值:返回一個(gè)多維的數(shù)值數(shù)組,從 0 開(kāi)始,每個(gè)維度都包含 size 元素
$arr10 = ['name'=>'小明', 'sex'=>'男', 'age'=>18, 'phone'=>'13785459358', 'email'=>'xiaoming@qq.com', 'address'=>'北京' ];
$newArr5 = array_chunk($arr10, 3, true);
echo '<pre>';
print_r($newArr5);
echo '</pre>';
語(yǔ)法:array_fill(index,number,value)
index:必需。規(guī)定返回?cái)?shù)組的起始索引
number:必需。規(guī)定填充的元素的數(shù)量,其值必須大于 0
value:可選。必需。規(guī)定用于填充數(shù)組的鍵值
返回值:返回填充的數(shù)組
$arr11 = array_fill(2, 4, '你好');
echo '<pre>';
print_r($arr11);
echo '</pre>';
語(yǔ)法:array_fill_keys(keys,value)
keys:必需。數(shù)組,其值將被用于填充數(shù)組的鍵名
value:必需。規(guī)定用于填充數(shù)組的鍵值
返回值:返回填充的數(shù)組
$keys = ['n1', 'n2', 'n3'];
$arr12 = array_fill_keys($keys, 18);
echo '<pre>';
print_r($arr12);
echo '</pre>';
語(yǔ)法:array_pad(array,size,value)
array:必需。數(shù)組,其值將被用于填充數(shù)組的鍵名
size:必需。規(guī)定用于填充數(shù)組的鍵值
value:必需。規(guī)定從函數(shù)返回的數(shù)組中新元素的值
返回值:返回帶有新元素的數(shù)組
$arr13 = ['小明', '男', 18];
$newArr6 = array_pad($arr13, 5, 13785459358);
echo '<pre>';
print_r($newArr6);
echo '</pre>';
語(yǔ)法:extract(array,extract_rules,prefix)
array:必需。規(guī)定要使用的數(shù)組
extract_rules:可選。extract() 函數(shù)將檢查每個(gè)鍵名是否為合法的變量名,同時(shí)也檢查和符號(hào)表中已存在的變量名是否沖突。
prefix:可選。規(guī)定前綴,前綴和數(shù)組鍵名之間會(huì)自動(dòng)加上一個(gè)下劃線(xiàn)
返回值:返回成功設(shè)置的變量數(shù)目
$arr14 = ['name'=>'小明', 'sex'=>'男', 'age'=>18, 'phone'=>'13785459358'];
extract($arr14);
echo "<br>\$name = $name; \$sex = $sex; \$age = $age; \$phone = $phone";
語(yǔ)法:array array_filter ( array $array [, callable $callback [, int $flag = 0 ]] )
array:必需。規(guī)定要過(guò)濾的數(shù)組
callback:可選。規(guī)定要用的回調(diào)函數(shù)
flag:可選。決定 callback 接收的參數(shù)形式,ARRAY_FILTER_USE_KEY - callback 接受鍵名作為的唯一參數(shù),ARRAY_FILTER_USE_BOTH - callback 同時(shí)接受鍵名和鍵值
返回值:返回過(guò)濾的數(shù)組
$arr = [10, 11, 12, 13, 14, 15];
$newArr = array_filter($arr, function($n){
return $n > 11 && $n < 14;
});
echo '<pre>';
print_r($newArr);
echo '</pre>';
語(yǔ)法:array_map(myfunction,array1,array2,array3…)
myfunction:必需。用戶(hù)自定義函數(shù)的名稱(chēng),或者是 null
array1:必需。規(guī)定數(shù)組
array2:必需。規(guī)定數(shù)組
array3:必需。規(guī)定數(shù)組
返回值:返回包含用戶(hù)自定義函數(shù)作用后的 array1 的值的數(shù)組
$arr1 = [10, 11, 12, 13, 14, 15];
$arr2 = [15, 16, 17, 18, 19, 21];
echo '<pre>';
print_r(array_map(function($n1, $n2){
if ($n2 - $n1 === 5) {
return '等于5';
} else {
return "不等于5";
};
}, $arr1, $arr2));
echo '</pre>';
語(yǔ)法:array_walk(array,myfunction,parameter…)
array:必需。規(guī)定數(shù)組
myfunction:必需。用戶(hù)自定義函數(shù)的名稱(chēng)
parameter…:可選。規(guī)定用戶(hù)自定義函數(shù)的參數(shù),您可以為函數(shù)設(shè)置一個(gè)或多個(gè)參數(shù)
返回值:如果成功則返回 TRUE,否則返回 FALSE
$arr3 = ['name'=>'小明', 'sex'=>'男', 'age'=>18];
function callback(&$value, $key) {
switch ($key) :
case $key === 'name':
return $value = '小紅';
case $key === 'sex':
return $value = '女';
case $key === 'age':
return $value = 17;
default:
echo 'error';
endswitch;
}
if (array_walk($arr3, 'callback')){
echo '<pre>';
print_r($arr3);
echo '</pre>';
} else {
echo 'failed';
};
echo '4. array_reduce():迭代處理數(shù)組元素';
語(yǔ)法:array_reduce(array,myfunction,initial)
array:必需。規(guī)定數(shù)組
myfunction:必需。規(guī)定函數(shù)的名稱(chēng)
initial:可選。規(guī)定發(fā)送到函數(shù)處理的第一個(gè)值
返回值:返回結(jié)果值
echo '<br>';
$arr4 = ['小明', '小紅', '小王'];
function callback1($v1, $v2) {
return $v1.','.$v2;
}
echo array_reduce($arr4, 'callback1', '姓名:');
語(yǔ)法:array_slice(array,start,length,preserve)
array:必需。規(guī)定數(shù)組
start,:必需。數(shù)值。規(guī)定取出元素的開(kāi)始位置
length:可選。數(shù)值。規(guī)定被返回?cái)?shù)組的長(zhǎng)度
preserve:可選。規(guī)定函數(shù)是保留鍵名還是重置鍵名
返回值:返回?cái)?shù)組中的選定部分
$arr = ['name'=>'小明', 'sex'=>'男', 'age'=>18, 'phone'=>'13785459358', 'email'=>'xiaoming@qq.com', 'address'=>'北京' ];
echo '<pre>';
print_r(array_slice($arr, 3, 2, true));
echo '</pre>';
語(yǔ)法:array_splice(array,start,length,array)
array:必需。規(guī)定數(shù)組
start,:必需。數(shù)值。規(guī)定刪除元素的開(kāi)始位置
length:可選。數(shù)值。規(guī)定被移除的元素個(gè)數(shù)
array:可選。規(guī)定帶有要插入原始數(shù)組中元素的數(shù)組
返回值:返回包含被提取元素的數(shù)組
$arr1 = ['name'=>'小明', 'sex'=>'男', 'age'=>18, 'phone'=>'13785459358', 'email'=>'xiaoming@qq.com', 'address'=>'北京' ];
array_splice($arr1, 3, 2, ['school'=>'北京大學(xué)', 'class'=>'軟件工程一班']);
echo '<pre>';
print_r($arr1);
echo '</pre>';
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號(hào)
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)