php中的方法是真的多,多到可能你干了几年也没用过。很多时候每当自己绞尽脑汁封装一个方法后才发现,php已经有封装好的方法了!有的时候只需要两个函数,几行代码就能搞定。而且,正因php底层是c编写的,使用php的方法远比自己写的性能要好!
根据二维数组中的某一个字段进行排序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| <?php
$records = array( array( 'id' => 2135, 'first_name' => 'John', 'last_name' => 'Doe', ), array( 'id' => 3245, 'first_name' => 'Sally', 'last_name' => 'Smith', ), array( 'id' => 5342, 'first_name' => 'Jane', 'last_name' => 'Jones', ), array( 'id' => 5623, 'first_name' => 'Peter', 'last_name' => 'Doe', ) ); $first_names = array_column($records, 'first_name'); array_multisort($first_names,SORT_DESC,$records); print_r($records); ?>
|
以上例程会输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| Array ( [0] => Array ( [id] => 3245 [first_name] => Sally [last_name] => Smith )
[1] => Array ( [id] => 5623 [first_name] => Peter [last_name] => Doe )
[2] => Array ( [id] => 2135 [first_name] => John [last_name] => Doe )
[3] => Array ( [id] => 5342 [first_name] => Jane [last_name] => Jones )
)
|
对二维数组去重
注意键名保留不变。array_unique() 先将值作为字符串排序,然后对每个值只保留第一个遇到的键名,接着忽略所有后面的键名。这并不意味着在未排序的 array
中同一个值的第一个出现的键名会被保留。
1 2 3 4 5
| <?php $input = array(4, "4", "3", 4, 3, "3"); $result = array_unique($input); var_dump($result); ?>
|
以上例程会输出:
1 2 3 4
| array(2) { [0] => int(4) [2] => string(1) "3" }
|
如果同一个值出现多次,则最后一个键名将作为它的值,其它键会被丢弃。
1 2 3 4 5 6
| <?php $input = array("a" => 1, "b" => 1, "c" => 2); $flipped = array_flip($input);
print_r($flipped); ?>
|
以上例程会输出:
1 2 3 4 5
| Array ( [1] => b [2] => c )
|
删除一维数组中某一个值元素的操作方法
1 2 3 4 5 6 7 8 9 10 11 12
| <?php $arr = array( '0' => '321', '1' => '322', '2' => '323', '3' => '324', '4' => '325', '5' => '326', );
$arr = array_merge(array_diff($arr, array(321))); print_r($arr);
|
以上例程会输出:
1 2 3 4 5 6 7 8
| Array ( [0] => 322 [1] => 323 [2] => 324 [3] => 325 [4] => 326 )
|
模糊搜索数组
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
| <?php $arr = [ ["id"=>1,"name"=>"张小明"], ["id"=>2,"name"=>"李小强"], ["id"=>3,"name"=>"王二狗"], ["id"=>4,"name"=>"王德法"], ];
function arrlikes($data,$key,$info) { $arr = array(); foreach($data as $k=>$v ){ if (strstr( $v[$info] , $key ) !== false ){ array_push($arr, $v); } } return $arr; } print_r(arrlikes($arr,'王',"name"));
|
以上例程会输出:
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| Array ( [0] => Array ( [id] => 3 [name] => 王二狗 )
[1] => Array ( [id] => 4 [name] => 王德法 ) )
|