Thứ Năm, 24 tháng 9, 2009

Một số hàm xử lý mảng trong PHP (20 hàm)


Tiếp theo chuỗi thì đến mảng nào:
1. array_change_key_case($array, [int $case])
- Đổi toàn bộ key của mảng thành chữ hoa hoặc chữ thường tùy thuộc vào giá trị của tham số $case truyền vào. Default $case sẽ nhận giá trị 0
- $case có thể có các giá trị: CASE_LOWER(hoặc thay thế bằng 0) và CASE_UPPER(hoặc thay thế bằng 1)
- Example:

Code:

$array1 = array("First_name"=>"a Thang", "Last_name"=>"b Han Van", 3=> "c This is number");
+ $ary1 = array_change_key_case($array1, 1 );
//Output:
Array
(
[FIRST_NAME] => Thang
[LAST_NAME] => Han Van
[3] => This is number
)
+ $ary2 = array_change_key_case($array1) //convert to lowercase //Output:
Array (
[first_name] => a Thang
[last_name] => b Han Van
[3] => c This is number
)


2. array_push( array &$array, mixed $var [, mixed $...] )

- Thêm một hoặc nhiều phần tử vào cuối một mảng có sẵn


- Nó hoạt động giống như ta thêm một phần tử bằng cách 2: $xxx[] = “xxxx”;


- Sẽ có lỗi xảy ra nếu tham số đầu tiên truyền vào không phải là một mảng. Khác với các dùng thứ 2 để thêm phần tử vào mảng, ở cách 2 nếu mảng chưa tồn tại thì sẽ khởi tạo mảng


- Key của phần tử mới được thêm vào sẽ bằng key lớn nhất trong mảng(nếu là mảng số, hoặc mảng hỗn hợp) cộng thêm 1 hoặc bắt đầu từ 0 với mảng associative


- Nếu chỉ thêm một phần tử vào mảng thì nên sử dụng cách thứ 2.


- Example :



Code:



array_push($array1, "Them bang array_push");
//print_r($array1)
Array
// * (
// * [Frist_name] => Thang
// * [Last_name] => Han Van
// * [3] => This is number
// * [4] => Them bang array_push
// * )


3. array_pop̣̣̣̣̣̣̣( array &$array )

- Pop and returns the last value of the array . Nếu mảng là rỗng hoặc ko phải mảng, giá trị trả về sẽ là null


- Example:



Code:



$ary3 = array_pop($array1);
var_dump($array1); //array(2) { ["Frist_name"]=> string(7) "a Thang" ["Last_name"]=> string(9) "b Han Van" }
var_dump($ary3); //string(16) "c This is number"


4. array_shift(array &$array)

- Shift an element off the beginning of array


- Example:



Code:



$ary_shift = array_shift($array1);    
var_dump($ary_shift); //string(7) "a Thang"


5. array_unshift ( array &$array, mixed $var [, mixed $...] )

- Thêm một hoặc nhiều phần tử vào đầu mảng


- Example:



Code:



    $aryToUnshift = array("array unshift");
$ary_unshift = array_unshift($array1, $aryToUnshift);
var_dump($array1);
//output:
array(4) {
[0]=>
array(1) {
[0]=>
string(13) "array unshift"
}
["Frist_name"]=>
string(7) "a Thang"
["Last_name"]=>
string(9) "b Han Van"
[1]=>
string(16) "c This is number"
}


6. sort ( array &$array [, int $sort_flags] )

- Sắp xếp mảng, chiều sắp xếp tùy thuộc vào tham số $sort_flags. Default sẽ sắp xếp theo chiều ASC.


- Sử dụng hàm sort sẽ làm thay đổi key của all các phần tử trong mảng


- Sort_flags nhận các giá trị sau: SORT_REGULAR, SORT_NUMERIC, SORT_STRING, SORT_LOCALE_STRING (xem thêm phpmanual)


- Example:



Code:



$aryToSort = array(4,2,44,7,6);
sort($aryToSort);
print_r($aryToSort);
Array
(
[0] => 2
[1] => 4
[2] => 6
[3] => 7
[4] => 44
)


7. asort( array &$array [, int $sort_flags] )

- Sắp xếp một mảng kết hợp giữ nguyên key của các phần tử


- Sort_flags giống như hàm sort


- Example:



Code:



$aryToSort = array(
"key 4" => 4,"key 2" =>2,
"key 44" =>44,"key 7"=>7,
"key 6" =>6);
asort($aryToSort);
print_r($aryToSort);
Array
(
[key 2] => 2
[key 4] => 4
[key 6] => 6
[key 7] => 7
[key 44] => 44
)


8. rsort(array &$array [, int $sort_flags])

- Sort một mảng theo thứ tự đảo ngược


- Function này sẽ tự động gán key mới cho các phần tử trong mảng sau khi sort



Code:



$aryToSort = array(
"key 4" => 4,"key 2" =>2,
"key 44" =>44,"key 7"=>7,
"key 6" =>6);
rsort($aryToSort);
print_r($aryToSort);
Array
(
[0] => 44
[1] => 7
[2] => 6
[3] => 4
[4] => 2
)


--> Mảng đã bị đảo ngược và thay đổi key

9. arsort(array &$array [, int $sort_flags])


- Sort một mảng theo thứ tự đảo ngược, giữ nguyên key của các phần tử


- Example



Code:



$aryToSort = array(
"key 4" => 4,"key 2" =>2,
"key 44" =>44,"key 7"=>7,
"key 6" =>6);
arsort($aryToSort);
print_r($aryToSort);
Array
(
[key 44] => 44
[key 7] => 7
[key 6] => 6
[key 4] => 4
[key 2] => 2
)


10. ksort (array &$array [, int $sort_flags])

- Sorts an array by key, maintaining key to data correlations. This is useful mainly for associative arrays.



Code:



$aryToSort = array(
"key 4" => 4,"key 2" =>2,
"key 44" =>44,"key 7" =>7,
"key 6" =>6);
ksort($aryToSort);
print_r($aryToSort);
Array
(
[key 2] => 2
[key 4] => 4
[key 44] => 44
[key 6] => 6
[key 7] => 7
)


11. uksort( array &$array, callback $cmp_function )

- Sắp xếp key của mảng theo hàm do user định nghĩa



Code:



$aryToSort = array(
"key 4" => 4,"key 2" =>2,
"key 44" =>44,"key 7" =>7,
"key 6" =>6);
function xxx($a, $b) {
return ($a < $b);
}
uksort($aryToSort, "xxx");
print_r($aryToSort);
Array
(
[key 7] => 7
[key 6] => 6
[key 44] => 44
[key 4] => 4
[key 2] => 2
)


12. uasort( array &$array, callback $cmp_function )

- Sắp xếp giá trị của mảng theo hàm do user định nghĩa


- Giữ nguyên keys của các phần tử trong mảng



Code:



$aryToSort = array(
"key 4" => 4,"key 2" =>2,
"key 44" =>44,"key 7" =>7,
"key 6" =>6);
function xxx($a, $b)
{
return ($a < $b);
}
uasort($aryToSort, "xxx");
print_r($aryToSort);
Array
(
[key 44] => 44
[key 7] => 7
[key 6] => 6
[key 4] => 4
[key 2] => 2
)


13. count( mixed $var [, int $mode] )

- Trả về số phần tử của mảng


- Nếu $var không phải là 1 mảng hoặc object thì giá trị trả về là 1


- ở chế độ COUNT_RECURSIVE hàm count sẽ đếm all các mảng con. Để dễ hiểu hơn xin xem ví dụ:



Code:



 $food = array('fruits' => array('orange', 'banana', 'apple'),
'veggie' => array('carrot', 'collard', 'pea'));

// recursive count
echo count($food, COUNT_RECURSIVE); // output 8


- Lưu ý: hàm count có thể trả về giá trị 0 nếu một biến chưa được set hoặc một mảng được khởi tạo empty. Để xác định biến có được set hay không thì sử dụng hàm isset().

14. is_array( mixed $var )


- Trả về TRUE nếu $var là một array và ngược lại



Code:



$is_array = array(1,2,4,6,78,423,2);
echo is_array($is_array) ? 'Array' : 'not an Array';
//output: Array


15. array_slice ( array $array, int $offset [, int $length [, bool $preserve_keys]] )

- Trích xuất một phần tử trong mảng được chỉ định bởi offset và length


- If offset is non-negative, the sequence will start at that offset in the array. If offset is negative, the sequence will start that far from the end of the array. (Câu này ko biết dịch như nào cho thuận )


- Hàm này trả về array, array này sẽ được reset lại key. Từ PHP 5.2.0, để array không bị reset key thì cần set $preserve_keys = true


- Khi $length không được set thì hàm này sẽ slice các phần tử từ offset đến phần tử cuối cùng của mảng


- Lưu ý: hàm này ko làm thay đổi mảng truyền vào($array)



Code:



$input = array("a", "b", "c", "d", "e");
$xxx = array_slice($input, -3,2);
$xxxx = array_slice($input, -3,2, true);
var_dump($xxx);
array(2) {
[0]=>
string(1) "c"
[1]=>
string(1) "d"
}

var_dump($xxxx); //ko reset key
array(2) {
[2]=>
string(1) "c"
[3]=>
string(1) "d"
}


16. array_splice( array &$input, int $offset [, int $length [, array $replacement]] )

- Remove và thay thế(nếu $replacement dc set) một phần của mảng (bằng một cái gì đó mà set ở parameter $replacement)


- Nếu $length ko được chỉ định thì mặc định sẽ removes everything from offset to the end of array.



Code:



$aryToSplice = array("a", "b", "c", "d", "e");
array_splice($aryToSplice, 1, 2, "xxx");
var_dump($aryToSplice);
array(4) {
[0]=>
string(1) "a"
[1]=>
string(3) "xxx"
[2]=>
string(1) "d"
[3]=>
string(1) "e"
}


17. array_sum($array)

- return sum of values in an array as an integer or float


- Nếu giá trị không phải là số thì nó sẽ được convert sang số



Code:



$input = array("a", "b", "c", "d", "e");
$array_sum = array(1,2,4,6,78,423,2);
echo array_sum($array_sum) . "\n"; //output: 516
echo array_sum($input) //output: 0


18. in_array( mixed $needle, array $haystack [, bool $strict] )

- Kiếm tra sự tồn tại của một giá trị trong mảng. Return TRUE nếu tồn tại, FALSE nếu không tồn tại


- $needle có thể là 1 string, integer hoặc array


- Nếu $needle là string thì phép so sánh sẽ phân biệt cả chữ hoa và chữ thường


- Khi biến $strict được set là TRUE thì hàm sẽ kiếm tra cả type của $needle


- Từ version 4.2 trở về trước thì biến $needle không thể là 1 mảng



Code:



$ary1 = array(array(1,2,3), "b", "c", "d", "e");
$ary2 = array(1,2,3);
$res = in_array($ary2, $ary1);
echo $res; //output: 1


19. array_search ( mixed $needle, array $haystack [, bool $strict] )

- Tương tự như hàm in_array. Hàm array_search sẽ trả về key của phần tử được tìm thấy trong mảng.


- Nếu tìm thấy nhiều hơn một kết quả thì hàm sẽ trả về key của phần tử đầu tiên được tìm thấy.


- Lưu ý: hàm có thể trả về FALSE, cũng có thể trả về giá trị khác tương đương với FALSE như 0 hoặc “”



Code:



$ary1 = array("b", "c", "d", "e",array(1,2,3));
$ary2 = array(1,2,3);
$res = array_search($ary2, $ary1);
echo $res; //output: 4


20. array_unique( array $array )

- Loại bỏ giá trị trùng trong một mảng


- Key của các phần tử vẫn được giữ nguyên


- Function sẽ tự ép kiểu theo kiểu giá trị của phần tử trước.



Code:



$input = array("4","3", 4, "3", 3);
$result = array_unique($input);
var_dump($result);
array(2) {
[0]=>
string(1) "4"
[1]=>
string(1) "3"
}


__________________



I am waiting for your dream



http://diendanaptech.com

Không có nhận xét nào: