数组的键名和值:
//返回数组中的所有值(不保留键名)(重点)
//array_values()
$array=array("size"=>"XL","color"=>"gold");
var_dump(array_values($array));
//执行结果
//array (size=2)
// 0 => string 'XL' (length=2)
// 1 => string 'gold' (length=4)
//返回数组中所有的键名(注意参数) (重点)
//array_keys()
$array=array(
0=>100,
"color"=>"red",
"name"=>"ye"
);
var_dump(array_keys($array));
//执行结果:
//array (size=3)
// 0 => int 0
// 1 => string 'color' (length=5)
// 2 => string 'name' (length=4)
$array = array("blue" , "red" , "green" , "blue" , "blue");
print_r(array_keys($array,"blue"));
//执行结果:
//Array ( [0] => 0 [1] => 3 [2] => 4 ) -注意参数
//交换数组中的键和值 flip(快速翻转)
注意:如果有重复后面的会覆盖前面的
array_flip()
$arr=array("size"=>"XL","color"=>"gold");
$arr=array_flip($arr);
var_dump($arr);
//执行结果:
//array (size=2)
// 'XL' => string 'size' (length=4)
// 'gold' => string 'color' (length=5)
//检查数组中是否存在某个值
//注意:严格区分大小写
in_array()
$a=array('1.10','12.4','1.13');
if(in_array(1.13,$a)){
echo "yes";
}
//执行结果
//yes
//在数组中搜索给定的值,如果成功则返回相应的键名
//array_search()
$array=array(
0=>"blue",
1=>"red"
);
var_dump(array_search("red",$array));
//执行结果
//D:2018-8-8-yemengdi\2\shuzuhanshu.php:78:int 1
//检查给定的键名或索引是否存在于数组中
//array_key_exists()
//注意:他和isset()的区别
$search_array=array(
'first'=>1,
'second'=>4
);
if(array_key_exists('first',$search_array)){
echo '存在返回true';
}
//运行结果:
//存在返回true
数组的内部指针:
//返回数组中当前单元
//current()
$arr=array("foot","bike","car","plane");
echo current($arr);echo '<br/>';
echo next($arr);echo '<br/>';
echo prev($arr);
//运行结果:
//foot
//bike
//foot
//数组中的内部指针向前移动一位:
//next();
//数组中的内部指针向后倒回一位:
//prev();
//将数组的内部指针指向最后一个单元
//end();
$fruits=array('apple','banana','cranberry');
echo end($fruits);echo '<br/>';
echo reset($fruits);echo '<br/>';
//运行结果:
//cranberry
//apple
//将数组的内部指针指向第一个单元
//reset()
//返回数组内部指针当前指向元素的键名
//key()
$array=array(
'fruit1'=>'apple',
'fruit2'=>'grape',
'fruit3'=>'apple'
);
while($fruit_name=current($array)) {
if ($fruit_name=='apple') {
echo key($array).'<br />';
}
next($array);
}
//执行结果:
//fruit1
//fruit3
数组的分段和填充:
//从数组中取出一段
//array_slice(切开) 注意参数
$input=array("a","b","c","d","e");
print_r(array_slice($input,2));
echo '<br/>';
print_r(array_slice($input,-2,1));
echo '<br/>';
print_r(array_slice($input,0,3));
//运行结果:
//Array ( [0] => c [1] => d [2] => e )
//Array ( [0] => d )
//把数组中的一部分去掉,并用其他值取代 splice(剪接)
//array_splice()
$a1=array(
0=>"dog",1=>"cat",2=>"horse",3=>"bird"
);
$a2=array(0=>"tiger",1=>"lion");
array_splice($a1,0,2,$a2);
print_r($a1);
//运行结果:
//Array ( [0] => tiger [1] => lion [2] => horse [3] => bird )
//用值将数组填补到指定长度
//array_pad()
$input=array(1,15,6);
$result=array_pad($input,6,'aa');
print_r($result);
//运行结果:
//Array ( [0] => 1 [1] => 15 [2] => 6 [3] => aa [4] => aa [5] => aa )
//Array ( [0] => a [1] => b [2] => c )
数组与栈 队列:
//将一个或者多个单元压入数组的末尾
//array_push()
$sta=array("orange");
array_push($sta,"apple");
print_r($sta);
//运行结果:
//Array ( [0] => orange [1] => apple );
//将数组最后一个单元弹出
//array_pop()
$sta=array("orange","apple");
$fruit=array_pop($sta);
print_r($sta);
//运行结果
//Array ( [0] => orange )
//array_shift();
$sta=array("orange","apple");
$fruit=array_shift($sta);
print_r($sta);
//运行结果
//Array ( [0] => apple )
//在数组开头插入一个单元或者多个单元
//array_unshift()
$sta=array("orange");
array_unshift($sta,"apple","banana");
print_r($sta);
//运行结果
//Array ( [0] => apple [1] => banana [2] => orange )
数组排序:
//对数组进行升序排序,不保持索引关系
//sort()
$fruit=array("apple","banana");
sort($fruit);
print_r($fruit);
//运行结果
//Array ( [0] => apple [1] => banana )
//对数组进行逆向排序
//rsort()
$fruit=array("apple","banana");
rsort($fruit);
print_r($fruit);
//运行结果
// Array ( [0] => banana [1] => apple )
//对数组进行升序,并保持索引关系
//asort()
$fruit=array("a"=>"banana","b"=>"apple");
asort($fruit);
print_r($fruit);
//运行结果
// Array ( [b] => apple [a] => banana )
echo '<br/>';
//对数组进行逆向排序并保持索引关系
//arsort();
$fruit=array("b"=>"apple","a"=>"banana");
asort($fruit);
print_r($fruit);
//运行结果:
//Array ( [b] => apple [a] => banana )
//对数组按照键名排序
//ksort();
$fruit=array("b"=>"apple","a"=>"banana");
ksort($fruit);
print_r($fruit);
//运行结果
//Array ( [a] => banana [b] => apple )
//对数组按照键名逆向排序
//krsort()
$fruit=array("a"=>"banana","b"=>"apple");
krsort($fruit);
print_r($fruit);
//运行结果
//Array ( [b] => apple [a] => banana )
//用“自然排序”算法对数组排序
//natsort()
$array1 = array("img12.png", "img10.png", "img2.png", "img1.png");
natsort($array1);
print_r($array1);
//运行结果
//Array ( [3] => img1.png [2] => img2.png [1] => img10.png [0] => img12.png )
echo '<br/>';
//用“自然排序”算法对数组进行不区分大小写字母的排序
//natcasesort();
$array1 = array('IMG0.png', 'img12.png', 'img10.png' ,'img2.png' ,'img1.png' ,'IMG3.png');
natcasesort($array1);
print_r($array1);
//运行结果:
//Array ( [0] => IMG0.png [4] => img1.png [3] => img2.png [5] => IMG3.png [2] => img10.png [1] => img12.png )
数组的计算:
//计算数组中所有值的和
//array_sum()
$a=array(2,4,5);
echo array_sum($a);
//运行结果:
//11
echo '<br/>';
//合并一个或多个数组
//注意:键值重复时,后面的会覆盖前面的,并且数字键值会被重新编号
//array_merge()
$array1 = array("color" => "red" , 2 , 4);
$array2 = array("a" , "b" , "color" => "green" , "shape" => "trapezoid" , 4 );
$result=array_merge($array1,$array2);
print_r($result);
//运行结果
//Array ( [color] => green [0] => 2 [1] => 4 [2] => a [3] => b [shape] => trapezoid [4] => 4 )
//计算数组的差集
//array_diff()
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result=array_diff($array1,$array2);
var_dump($result);
//执行结果:
//array (size=1)
// 1 => string 'blue' (length=4)
//带索引检查计算数组差集
//array_diff_assoc()
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow" , "red");
$res=array_diff_assoc($array1,$array2);
var_dump($res);
//运行结果
//array (size=3)
// 'b' => string 'brown' (length=5)
// 'c' => string 'blue' (length=4)
// 0 => string 'red' (length=3)
//计算数组的交集
//array_intersect()
$array1 = array("a" => "green", "red", "blue");
$array2 = array("b" => "green", "yellow", "red");
$res=array_intersect($array1,$array2);
var_dump($res);
//运行结果
//array (size=2)
// 'a' => string 'green' (length=5)
// 0 => string 'red' (length=3)
//带索引检查计算数组的交集
//array_intersect_assoc()
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green" , "b" => "yellow", "blue" , "red");
$res=array_intersect_assoc($array1,$array2);
var_dump($res);
//运行结果
//array (size=1)
// 'a' => string 'green' (length=5)
其他数组函数:
//创建一个数组,用一个数组的值作为其键名,另一个数组作为值
$a = array('green', 'red', 'yellow');
$b = array('avocado', 'apple', 'banana');
$c=array_combine($a,$b);
var_dump($c);
//运行结果
//array (size=3)
// 'green' => string 'avocado' (length=7)
// 'red' => string 'apple' (length=5)
// 'yellow' => string 'banana' (length=6)
//移除数组中重复的值
$input = array( "a" => "green", "red" , "b" => "green" , "blue", "red");
$res=array_unique($input);
var_dump($res);
//运行结果
//array (size=3)
// 'a' => string 'green' (length=5)
// 0 => string 'red' (length=3)
// 1 => string 'blue' (length=4)
//将数组打乱
//shuffle()
$numbers = range ( 1 , 3 );
shuffle($numbers);
var_dump($numbers);
//运行结果
//array (size=3)
// 0 => int 2
// 1 => int 1
// 2 => int 3
//从数组中随机取出一个或者多个单元
//array_rand()
$input = array("Neo" , "Morpheus", "Trinity", "Cypher" , "Tank" );
$rand_keys = array_rand ( $input , 2 );
var_dump($rand_keys);
//运行结果
//array (size=2)
// 0 => int 2
// 1 => int 4
//建立一个数组,包括变量名和它们的值
$firstname = "Peter";
$lastname = "Griffin";
$age = "38";
$result = compact("firstname", "lastname", "age");
var_dump($result);
//执行结果
//array (size=3)
// 'firstname' => string 'Peter' (length=5)
// 'lastname' => string 'Griffin' (length=7)
// 'age' => string '38' (length=2)
//将一个数组分割成多个
//array_chunk()
$input_array = array('a', 'b', 'c', 'd', 'e');
var_dump(array_chunk($input_array,2));
//运行结果
//array (size=3)
// 0 =>
// array (size=2)
// 0 => string 'a' (length=1)
// 1 => string 'b' (length=1)
// 1 =>
// array (size=2)
// 0 => string 'c' (length=1)
// 1 => string 'd' (length=1)
// 2 =>
// array (size=1)
// 0 => string 'e' (length=1)