PHP数组
数组的基本使用
数组的输出
<?php
$word= ['泥萌', '蜗萌', '塔萌'];
echo '<pre>';
var_dump($word);
print_r($word);
echo '</pre>';
?>
数组的添加与删除
<?php
$word= ['泥萌', '蜗萌', '塔萌'];
# 添加
$word[4]= '亲萌';
echo '<pre>';
print_r($word);
echo '</pre>';
# 删除
unset($word[2]);
echo '<pre>';
print_r($word);
echo '</pre>';
?>
数组操作符
<?php
$name1= ["a"=> "泥萌", "b"=> "蜗萌", "c"=> "塔萌"];
$name2= ["a"=> "Sunny", "b"=> "Jerry"];
$name3= $name1+ $name2;
print_r($name3);
echo '<br>';
$name3= $name2+ $name1;
print_r($name3);
?>
数组的常见操作
数组遍历
数组指针
- 数组指针
mixed current(array &$array)
获取数组中当前元素的值,如果内部指针超出数组的末端,则返回false
mixed key(array &$array)
获取当前元素的下标,即键名
mixed next(array &$array)
将数组的内部指针向前移动一位
mixed prev(array &$array)
将数组的内部指针倒回一位
mixed end(array &$array)
将数组的内部指针指向最后一个元素
mixed reset(array &$array)
重置指针,即将数组的指针指向第一个元素
<?php
# 数组的遍历
$word= ["a"=> "泥萌", "b"=> "蜗萌", "c"=> "塔萌"];
while(current($word)){
echo key($word);
echo "=>";
echo current($word);
echo "<br>";
next($word);
}
?>
foreach数组的遍历
<?php
# 数组的遍历
$word= ["Sunny"=> "泥萌", "Tomy"=> "蜗萌", "Jerry"=> "塔萌"];
foreach($word as $v){
echo "{$v}<br>";
}
foreach($word as $k=>$v){
echo "{$k}:{$v}<br>";
}
?>
each()
函数指针的移动
array each(array &$array);
<?php
# 数组的遍历
$word= ["a"=> "泥萌", "b"=> "蜗萌", "c"=> "塔萌"];
echo "<pre>";
print_r(each($word));
print_r(each($word));
print_r(each($word));
echo "</pre>";
?>
list()`语言结构
<?php
$name= ["泥萌", "蜗萌", "塔萌"];
list($Sunny, $Tomy, $Jerry)= $name;
echo $Sunny;
echo $Tomy;
echo $Jerry;
?>
关于each() list() while
实现数组的遍历
<?php
# 数组的遍历
$word= ["Sunny"=> "泥萌", "Tomy"=> "蜗萌", "Jerry"=> "塔萌"];
while(list($key, $value)= each($word)){
echo "{$key}=>{$value}<br>";
}
?>
数组排序
冒泡排序
<?php
function bubbleSort($arr){
$temp= 0;
$len= count($arr);
for($i=0; $i<$len-1; $i++){
for($j=0; $j<$len-1-$i; $j++){
if($arr[$j]> $arr[$j+1]){
$temp= $arr[$j];
$arr[$j]= $arr[$j+1];
$arr[$j+1]= $temp;
}
}
}
return $arr;
}
$arr= [15, 24, 35, 29, 19, 2];
print_r(bubbleSort($arr));
?>
数组元素查找
顺序查找法
<?php
function search(&$arr, $findVal){
$flag= false;
for($i=0; $i<count($arr); $i++){
if($arr[$i]== $findVal){
echo '哈哈!原来你在这儿啊!';
$flag= true;
}
}
if(!$flag){
echo '哎?你在哪儿呢?';
}
}
$arr= [2, 3, 4, 5, 6, 7, 8, 9];
search($arr, 1);
?>
二分查找法
<?php
function binarySearch(&$arr, $findVal, $start, $end){
if($start> $end){
echo '哎?你在哪儿呢?';
return false;
}
$mid= round(($start+ $end)/2);
if($findVal< $arr[$mid]){
binarySearch($arr, $findVal, $start, $mid- 1);
}elseif($findVal> $arr[$mid]){
binarySearch($arr, $findVal, $mid+ 1, $end);
}else{
echo "哦!原来你在{$mid}这里啊!";
}
}
$arr= [2, 3, 4, 5, 6, 7, 8, 9];
binarySearch($arr, 6, 0, count($arr)-1);
?>
数组的常用函数
基本函数
is_array()
判断一个变量是否是数组
<?php
$word= ["Sunny"=> "泥萌", "Tomy"=> "蜗萌", "Jerry"=> "塔萌"];
var_dump(is_array($word));
?>
count()
计算数组中元素的个数
<?php
$word= ["Sunny"=> "泥萌", "Tomy"=> "蜗萌", "Jerry"=> "塔萌"];
var_dump(count($word));
?>
array_unique()
移除数组中的重复元素
<?php
$word= ["Marry"=> "塔萌", "Sunny"=> "泥萌", "Tomy"=> "蜗萌", "Jerry"=> "塔萌"];
print_r(array_search('塔萌', $word));
?>
键值对的相关函数
array_search()
获取数组中元素对应的键名
<?php
$word= ["Jerry"=> "塔萌", "Sunny"=> "泥萌", "Tomy"=> "蜗萌", "Jerry"=> "塔萌"];
echo array_search('塔萌', $word);
?>
array_keys()
获取数组中元素对应的键名,可以返回所有匹配的键名
<?php
$word= ["Marry"=> "塔萌", "Sunny"=> "泥萌", "Tomy"=> "蜗萌", "Jerry"=> "塔萌", "Jack"=>25, "Rose"=>'25'];
print_r(array_keys($word));
echo '<br>';
print_r(array_keys($word, '塔萌'));
echo '<br>';
print_r(array_keys($word, '25', false)); // 不依赖类型
echo '<br>';
print_r(array_keys($word, '25', true)); // 依赖类型
?>
排序函数 sort()
sort()
对数组进行升序排列
SORT_REGULAR
默认值,将自动识别数组元素的类型进行排序
SORT_NUMERIC
用于数字元素的排序
SORT_STRING
用于字符串元素的排序
SORT_LOCALE_STRING
根据当前的locale设置来把元素当作字符串比较
<?php
$word= [25, 18, 34, 14, 78, 77, 28];
sort($word, SORT_REGULAR);
print_r($word);
?>
合并函数 array_merge()
<?php
$word= ["Marry"=> "塔萌", "Sunny"=> "泥萌", "Tomy"=> "蜗萌", "Jerry"=> "塔萌"];
$tiger= ["Jack"=>25, "Rose"=>'25'];
$res= array_merge($word, $tiger);
echo '<pre>';
print_r($res);
echo '</pre>';
?>
拆分函数 array_chunk()
array_chunk()
将一个数组分割成多个数组
<?php
$word= ["Marry"=> "塔萌", "Sunny"=> "泥萌", "Tomy"=> "蜗萌", "Jerry"=> "塔萌"];
# 索引下标
echo '<pre>';
print_r(array_chunk($word, 2));
echo '</pre>';
# 关联下标
echo '<pre>';
print_r(array_chunk($word, 2, true));
echo '</pre>';
?>
随机函数 array_rand()
array_rand()
从数组中随机取出一个或多个元素
<?php
$word= ["Marry"=> "塔萌", "Sunny"=> "泥萌", "Tomy"=> "蜗萌", "Jerry"=> "塔萌"];
# 随机取出一个值
echo '<pre>';
print_r(array_rand($word));
echo '</pre>';
# 随机取出两个值
echo '<pre>';
print_r(array_rand($word, 2));
echo '</pre>';
?>
反相函数 array_reverse()
array_reverse()
返回一个元素顺序相反的数组
<?php
$word= ["Marry"=> "塔萌", "Sunny"=> "泥萌", "Tomy"=> "蜗萌", "Jerry"=> "塔萌"];
$res= array_reverse($word);
echo '<pre>';
print_r($res);
echo '</pre>';
?>