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
// Array representing a possible record set returned from a database
$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"=>"王德法"],
];
/**
* 模糊搜索数组
* @param array $data 数组
* @param string $key 匹配字符串
* @param string $info 字段
* @return array
*/
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] => 王德法
)
)