PHP数组函数

数组的键名和值:

//返回数组中的所有值(不保留键名)(重点)
//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)
 

猜你喜欢

转载自blog.csdn.net/qingchurenxiaoyao/article/details/81545043