·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> php基础知识【函数】(1)数组array

php基础知识【函数】(1)数组array

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
php基础知识【函数】(1)数组array

一、排序

  1、sort -- 从最低到最高排序,删除原有的键名,赋予新的键名【字母比数字高】

  2、rsort -- 逆向排序(最高到最低),删除原有的键名,赋予新的键名【字母比数字高】

3、asort -- 正向排序,保持索引关系

4、arsort --逆向排序,保持索引关系 5、ksort --按照键名排序 6、krsort --按照键名逆向排序

   (1)纯英文:$fruits = array("d" => "lemon", "a" => "orange", "b" => "banana", "c" => "apple");

     asort($fruits);//=> Array ( [c] => apple [b] => banana [d] => lemon [a] => orange )

  (2)纯数字:$fruits = array("d" => "341", "a" => "524", "b" => "75", "c" => "657");

asort($fruits);//=>Array ( [b] => 75 [d] => 341 [a] => 524 [c] => 657 )

   (3)混合: $fruits = array("d" => "daf", "a" => "fasd", "b" => "234", "c" => "657");

asort($fruits);//=> Array ( [b] => 234 [c] => 657 [d] => daf [a] => fasd ) 先数字后字母

7、natsort --用“自然排序”算法排序

8、natcasesort --用“自然排序”算法进行排序,不区分大小写 9、usort -- 使用用户自定义的比较函数对数组中的值进行排序,删除原有的键名 10、uasort --使用用户自定义的比较函数对数组中的值进行排序并保持索引关联 11、uksort --使用用户自定义的比较函数对数组中的键名进行排序 12、array_multisort -- 对多个数组或多维数组进行排序,关联键名保持不变,但数字键名会被重新索引。第一个参数必须是一个数组 13、array_reverse -- 返回一个单元顺序相反的数组

$input = array("php",array("green", "red")); $result = array_reverse($input);//Array([0] => Array([0] => green,[1] => red),[1] => php) $res = array_reverse($input, TRUE);//true表示保留原来的键名二、key和value 1、key -- 返回数组中当前单元的键名。 2、array_key_exists -- 检查给定的键名或索引是否存在于数组中,也可用于对象 $search_array = array('first' => 1, 'second' => 4); array_key_exists('first', $search_array));//存在时返回 TRUE 3、array_keys -- 返回数组中所有的键名 $array = array(0 => 100, "color" => "red"); PRint_r(array_keys($array));//Array([0] => 0,[1] => color) 4、array_values -- 返回数组中所有的值 $array = array("size" => "XL", "color" => "gold"); print_r(array_values($array));//Array([0] => XL [1] => gold) 5、array_count_values -- 统计数组中所有的值出现的次数 $array = array(1, "hello", 1, "world", "hello"); print_r(array_count_values ($array));//Array([1] =>2,[hello] =>2,[world] => 1) 6、array_flip -- 交换数组中的键和值,如果同一个值出现多次,只取最后一个,其它的都丢失。 $trans = array("a" => 1, "b" => 1, "c" => 2); $trans = array_flip($trans);//Array([1] => b,[2] => c) 7、array_search -- 在数组中搜索给定的值,如果成功则返回相应的键名 $array = array(0 => 'blue', 1 => 'red', 2 => 'green', 3 => 'red'); $key = array_search('green', $array); // $key = 2; $key = array_search('red', $array); // $key = 1; 8、array_sum -- 计算数组中所有值的和 $a = array(2, 4, 6, 8); echo "sum(a) = ".array_sum($a);//20 三、交集和差集 1、array_diff -- 计算数组的差集,返回数组,键名不用于比较 $array1 = array("a" => "green", "red", "blue", "red"); $array2 = array("b" => "green", "yellow", "red"); $result = array_diff_assoc($array1, $array2);//Array([1] => blue) 2、array_diff_assoc -- 带索引检查计算数组的差集,返回数组,键名也用于比较,可多个数组比较 $array1 = array ("a" => "green", "b" => "brown", "c" => "blue", "red"); $array2 = array ("a" => "green", "yellow", "red"); $result = array_diff_assoc($array1, $array2);//Array([b] =>brown,[c] =>blue,[0] =>red) 3、array_diff_uassoc -- 用用户提供的回调函数做索引检查来计算数组的差集 function func($a, $b){if ($a === $b) {return 0;}} $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red"); $array2 = array("a" => "green", "yellow", "red"); $result = array_diff_uassoc($array1, $array2, "func");//Array([b] =>brown,[c] =>blue,[0] =>red) 4、array_intersect -- 计算数组的交集,键名不用于比较 $array1 = array("a" => "green", "red", "blue"); $array2 = array("b" => "green", "yellow", "red"); $result = array_intersect($array1, $array2);//Array([a] =>green,[0] =>red) 5、array_intersect_assoc -- 带索引检查计算数组的交集,键名也用于比较 $array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red"); $array2 = array("a" => "green", "yellow", "red"); $result_array = array_intersect_assoc($array1, $array2);//Array([a] => green)四、指针操作 1、current -- 返回数组中的当前单元 2、reset -- 将数组的内部指针指向第一个单元 3、end -- 将数组的内部指针指向最后一个单元 4、next -- 将数组中的内部指针向前移动一位 5、prev -- 将数组的内部指针倒回一位 $transport = array('foot', 'bike', 'car', 'plane'); $mode = current($transport); // $mode = 'foot'; $mode = next($transport); // $mode = 'bike'; $mode = next($transport); // $mode = 'car'; $mode = prev($transport); // $mode = 'bike'; 6、each -- 返回数组中当前的键/值对并将数组指针向前移动一步 返回为四个单元的数组,键名为 0,1,key 和 value。单元 0 和 key 包含有数组单元的键名,1 和 value 包含有数据。 $foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese"); $bar = each($foo);//Array{[1] => bob[value] => bob [0] => 0 [key] => 0}五、合并 1、array_merge_recursive -- 将一个或多个数组合并,如果数组中有相同键名,后一个值将不会覆盖原来的值,而是附加到后面。   $ar1 = array("color" => array("favorite" => "red"), 5);   $ar2 = array(10, "color" => array("favorite" => "green", "blue"));   $result = array_merge_recursive($ar1, $ar2);   //Array([color] => Array([favorite] => Array([0] =>red,[1] =>green),[0] => blue),[0] => 5,[1] => 10) 2、array_merge -- 合并一个或多个数组,如果字符串键名后面的将覆盖前一个,但数字键名相同,后面的值将不会覆盖原来的值,而是附加到后面。   $array1 = array("color" => "red", 2, 4);   $array2 = array("a", "b", "color" => "green", "shape" => "trapezoid", 4);   $result = array_merge($array1, $array2);   //Array([color] =>green,[0] =>2,[1] =>4,[2] =>a,[3] =>b,[shape] =>trapezoid,[4] => 4) 3、array_combine -- 创建一个数组,用一个数组的值作为其键名,另一个数组的值作为其值   $a = array('green', 'red', 'yellow');   $b = array('avocado', 'apple', 'banana');   $c = array_combine($a, $b);//Array([green]=>avocado,[red]=> apple,[yellow] =>banana) 六、取值 1、array_slice(array,offset[,length[,keys]]) -- 从数组中取出一段   offset非负,从数组中的此偏移量开始,为负,则从数组中距离末端这么远的地方开始   length正,数组中将有length个元素,为负将终止在距离数组末端这么远的地方。省略则从offset开始一直到数组的末端。   keys 设为 TRUE 保留键名,否则重置键名 2、array_rand(input,[num_req]) --从数组中随机取出一个或多个单元,num_req指明要取多少个,默认为 1。   $input = array("Neo", "Morpheus", "Trinity", "Cypher", "Tank");   $rand_keys = array_rand($input, 2);七、去值和替代 1、array_splice (array,offset[,length[,replacement]])-- 把数组中的一部分去掉并用其它值取代 ,数字键名不被保留

    offset:为正,从数组中该值指定的偏移量开始移除,为负,则从末尾倒数该值指定的偏移量开始移除   length:省略则移除数组中从 offset 到结尾的所有部分。为正则移除这么多单元。为负则移除从offset到数组末尾倒数 length 为止中间所有的单元       如果给出了 replacement 数组,则被移除的单元被此数组中的单元替代   $input = array("red", "green", "blue", "yellow");   array_splice($input, 2);// $input is now array("red", "green")   $input = array("red", "green", "blue", "yellow");   array_splice($input, 1, -1);// $input is now array("red", "yellow")   $input = array("red", "green", "blue", "yellow");   array_splice($input, 1, count($input), "orange");// $input is now array("red", "orange")      $input = array("red", "green", "blue", "yellow");   array_splice($input, -1, 1, array("black", "maroon"));// $input is now array("red", "green","blue", "black", "maroon")   $input = array("red", "green", "blue", "yellow");   array_splice($input, 3, 0, "purple");// $input is now array("red", "green","blue", "purple", "yellow"); 2、array_unique -- 移除数组中重复的值,  $input = array("a" => "green", "red", "b" => "green", "blue", "red");   $result = array_unique($input);//Array([a] => green,0] => red,[1] => blue)   $input = array(4, "4", "3", 4, 3, "3");   $result = array_unique($input);//array(2) { [0]=> int(4) [2]=> string(1) "3" } 3、array_pop -- 将数组最后一个单元弹出(出栈),数组的长度减一,使用本函数后会重置数组指针。   $stack = array("orange"