Thứ Hai, 5 tháng 10, 2009

Dùng mảng (array) trong PHP

Dùng mảng (array) trong PHP - Phần 1

Viết lúc 04:37 ngày 11/09/2009 bởi Administrator . Xem: 0.

Là một danh sách các phần tử có cùng kiểu dữ liệu.Mảng có thể là mảng một chiều hay nhiều chiều. Mảng  có 2 thành phần là chỉ mục (key) và giá trị. Chỉ mục có thể là số nguyên hoặc là chuỗi . Bạn có thể khởi tạo mảng bằng các cách như sau:

view plaincopy to clipboardprint?

  1. $arr[key] = value;  
  2. $arr[] = value;  
  3. $arr= array($key1 =>value1,$key2=>value2);  
  4. $arr = array(value1, value2);  
$arr[key] = value;


$arr[] = value;


$arr= array($key1 =>value1,$key2=>value2);


$arr = array(value1, value2);


Như đã giới thiệu thì mảng có thể dùng số nguyên hoặc chuỗi để làm chỉ mục , ta tạm thời phân loại ra nhu sau:



Mng mt chiu có ch mc: là mảng được quản lý bằng cách sử dụng chỉ số dưới kiểu integer để biểu thị vị trí của giá trị yêu cầu.



Cú pháp: $name[index1];



Ví dụ: một mảng một chiều có thể được tạo ra như sau:



view plaincopy to clipboardprint?




  1. $meat[0]="chicken";  


  2. $meat[1]="steak";  


  3. $meat[2]="turkey";  



$meat[0]="chicken";


$meat[1]="steak";


$meat[2]="turkey";


Nếu bạn thực thi dòng lệnh sau: print $meat[1]; thì trên trình duyệt sẽ hiển thị dòng sau: steak. Bạn cũng có thể sử dụng hàm array( ) của PHP để tạo ra một mảng.



Ví dụ:



view plaincopy to clipboardprint?




  1. $meat=array("chicken","steak","turkey");  



$meat=array("chicken","steak","turkey");


Lưu ý: Khác với các ngôn ngữ lập trình khác ( nhu Pascal chẳng hạn) , phần tử đầu tiên của mảng có chỉ mục là 0 , không phải 1. Nhưng khi khai báo mảng , chỉ mục khởi đầu không nhất thiết là 0.



Ví dụ bạn tạo mảng thế này:



view plaincopy to clipboardprint?




  1. $meat = array("chicken","steak","tukey"); //Để lấy phần tử đầu tiên bạn sẽ gọi


  2. echo $meat[0]; //Nhưng nếu khia báo thế này


  3. $arr[5] = 1; //thì chỉ mục tiếp theo là 6.


  4. $arr[] = 3; //key là 6 nhá.



$meat = array("chicken","steak","tukey"); //Để lấy phần tử đầu tiên bạn sẽ gọi


echo $meat[0]; //Nhưng nếu khia báo thế này


$arr[5] = 1; //thì chỉ mục tiếp theo là 6.


$arr[] = 3; //key là 6 nhá.


Nhớ kỹ đều này nhá , lúc đầu tớ cũng bị PHP lừa về chuyện này đấy ( do trước đây chỉ học Pascal).



Mng mt chiu kết hp: rất thuận lợi khi dùng để ánh xạ một mảng sử dụng các t hơn là sử dụng các s ( integer), nó giúp ta giảm bớt thời gian và các mã yêu cầu để hiển thị một giá trị cụ thể.



Ví dụ bạn muốn ghi lại tất cả các thức ăn và các cặp rượu ngon trong việc ăn nhậu của mình.



view plaincopy to clipboardprint?




  1. $annhau["ruou"] = "Minh Mạng Tửu";  


  2. $annhau["khaivi"] = "Lạc rang";  


  3. $annhau["Trangmieng"] = "Chuối";  



$annhau["ruou"] = "Minh Mạng Tửu";


$annhau["khaivi"] = "Lạc rang";


$annhau["Trangmieng"] = "Chuối";


Một cách khác là bạn có thể sử dụng hàm array( ) của PHP để tạo ra một mảng loại này, ví dụ như sau:



view plaincopy to clipboardprint?




  1. $annhau = array( "ruou" => "Minh Mạng Tửu", "khaivi" => "Lạc Rang", "trangmieng" => "Chuối");  


  2. //Khi truy xuất phần tử mảng :


  3. echo $annhau["ruou"];  


  4. //Sẽ xuất ra : Minh Mạng Tửu



$annhau = array( "ruou" => "Minh Mạng Tửu", "khaivi" => "Lạc Rang", "trangmieng" => "Chuối");


//Khi truy xuất phần tử mảng :


echo $annhau["ruou"];


//Sẽ xuất ra : Minh Mạng Tửu 


Mng nhiu chiu có ch mc: chức năng của nó cũng giống như mảng một chiều có chỉ mục, ngoại trừ việc nó có thêm một mảng chỉ mục được dùng để chỉ định một phần tử. Cú pháp: $name[index1] [index2]..[indexN];



Một mảng hai chiều có chỉ mục được tạo ra như sau:



view plaincopy to clipboardprint?




  1. $position = $chess_board[5][4];  



$position = $chess_board[5][4];


Mng đa chiu kết hp: khá hữu ích trong PHP. Giả sử bạn muốn ghi lại các cặp rượu-thức ăn, không chỉ loại rượu, mà cả nhà sản xuất. Bạn có thể thực hiện như sau:



view plaincopy to clipboardprint?




  1. $pairings["Martinelli"] ["zinfandel"] = "Broiled Veal Chops";  


  2. $pairings["Beringer"] ["merlot"] = "Baked Ham";  


  3. $pairings["Jarvis"] ["sauvignon"] = "Prime Rib";  





Dùng mảng (array) trong PHP - Phần 2



Viết lúc 04:44 ngày 11/09/2009 bởi Administrator . Xem: 0.



Ở bài viết trước (Phần 1), chúng ta đã đi hết phần khái niệm về mảng, tiếp theo sẽ là giới thiệu các hàm để truy xuất mảng Để truy xuất hay nhập giá trị cho 1 phần tử mảng cụ thể , bạn có thể gọi trực tiếp chúng như sau:



view plaincopy to clipboardprint?




  1. $arr = $mang[1];  


  2. //hoặc


  3. $arr = $dothi["x"];  



$arr = $mang[1];


//hoặc


$arr = $dothi["x"];


Cú pháp là tên mng[ch mc]



Tips : Để xóa 1 phần tử ra khỏi mảng , ta dùng unset()



Ví dụ:



view plaincopy to clipboardprint?




  1. $arr = array(1,2,3,4);  


  2. unset($arr[2]);  


  3. //$arr bay giờ là array(1,2,4);



$arr = array(1,2,3,4);


unset($arr[2]);


//$arr bay giờ là array(1,2,4);


Để điếm các phần tử của mảng , dùng hàm count()



view plaincopy to clipboardprint?




  1. $arr = array(1,2,3,4);  


  2. $so = count($arr); // đố bạn bằng bao nhiu ?



$arr = array(1,2,3,4);


$so = count($arr); // đố bạn bằng bao nhiu ?


Để duyệt qua hết tất cả các phần tử của mảng (truy xuất hoặc nhập giá trị) ta dùng các cách sau:



1. Cách th nht , dùng vòng lp for



Nếu biết trước số phần tử của mảng ta có thể dùng vòng lặp for để duyệt qua các phần tử mảng:



view plaincopy to clipboardprint?




  1. <?php  


  2. $giatri = array(1,2,3,4,5,6,7,8,9,10);  


  3. for ($i = 0; $i < 10 ; $i ++)  


  4. echo $giatri[$i]."  


  5. ";  


  6. ?>  



<?php


$giatri = array(1,2,3,4,5,6,7,8,9,10);


for ($i = 0; $i < 10 ; $i ++)


echo $giatri[$i]."<br>";


?>


Chạy đoạn mã trên PHP sẽ xuất ra từ 1 đến 10. Để nhập giá trị vào thì cũng thế nhá



Ví dụ:



view plaincopy to clipboardprint?




  1. <?php  


  2. for ($i = 0; $i < 10 ; $i ++)  


  3. echo $giatri[$i] = $i +1 ;  


  4. ?>  



<?php


for ($i = 0; $i < 10 ; $i ++)


echo $giatri[$i] = $i +1 ;


?>


2. Dùng Foreach



Cú pháp:



view plaincopy to clipboardprint?




  1. foreach (array_expression as $value)  


  2.     statement  


  3. foreach (array_expression as $key => $value)  


  4.     statement  



foreach (array_expression as $value)


    statement


foreach (array_expression as $key => $value)


    statement


Ví dụ:



view plaincopy to clipboardprint?




  1. <?php  


  2. $giatri = array(1,2,3,4,5,6,7,8,9,10);  


  3. foreach ($giatri as $value)  


  4. echo $value."  


  5. ";  


  6. ?>  



<?php


$giatri = array(1,2,3,4,5,6,7,8,9,10);


foreach ($giatri as $value)


echo $value."<br>";


?>


Với foreach này để nhập giá trị vào ta phải thêm dấu " &" trước biến $value , như thế này &$value



view plaincopy to clipboardprint?




  1. <?php  


  2. $arr = array(1, 2, 3, 4);  


  3. foreach ($arr as &$value) {  


  4. $value = $value * 2;  


  5. }  


  6. // $arr is now array(2, 4, 6, 8)


  7. ?>   



<?php


$arr = array(1, 2, 3, 4);


foreach ($arr as &$value) {


    $value = $value * 2;


}


// $arr is now array(2, 4, 6, 8)


?> 


Thêm 1 ví dụ nữa , lần này sẽ có sự xuất hiện của chỉ mục



view plaincopy to clipboardprint?




  1. <?php  


  2. $arr = array("mot"=>"one", "hai"=>"two","ba"=> "three");  


  3. foreach ($arr as $key => $value) {  


  4. echo "Key: $key; Value: $value


  5. n";  


  6. }  


  7. ?>   



<?php


$arr = array("mot"=>"one", "hai"=>"two","ba"=> "three");


foreach ($arr as $key => $value) {


    echo "Key: $key; Value: $value<br />n";


}


?> 


Một cách khác để làm như trên ta sẽ dùng vòng lặp while đi với list() và each(). Xét ví dụ sau , thay vì dùng foreach như trên thì ta dùng while như sau:



view plaincopy to clipboardprint?




  1. <?php  


  2. $arr = array("one", "two","three");  


  3. while (list($key, $value) = each($arr)) {  


  4. echo "Key: $key; Value: $value


  5. n";  


  6. }  


  7. ?>   



<?php


$arr = array("one", "two","three");


while (list($key, $value) = each($arr)) {


    echo "Key: $key; Value: $value<br />n";


}


?> 


Lưu ý:


- list() chỉ hoạt động với mảng có chỉ mục là số và phần tử khởi đầu của mảng có chỉ mục là 0 ( PHP manual nói thế). List sẽ gán giá trị cho biến được khai báo bên trong hàm list với giá trị là giá trị tương ứng của mảng.


- Còn hàm each() sẽ trả về giá trị chỉ mục và giá trị của phần tử mảng hiện tại , đồng thời chuyển vị trí của chỉ mục lên 1 đơn vị , sẽ trả về False nếu vị trí của chỉ mục là vị trí cuối cùng trong mảng.Cặp giá trị trả về này sẽ nằm trong 1 mảng 4 phần tử là 0,1 , key, value.


- Phần tử 0 và key chứa tên chỉ mục của mảng, phần tử 1 và value tất nhiên sẽ chứa giá trị .


- Có thể chỉ sử dụng while và each thôi cũng đượ.



view plaincopy to clipboardprint?




  1. <?php  


  2. $arr = array("one", "two","three");  


  3. while ($phantu = each($arr)) {  


  4. echo "Key: $phantu['key']; Value: $phantu['value']  


  5. n";  


  6. }  


  7. ?>   



<?php


$arr = array("one", "two","three");


while ($phantu = each($arr)) {


    echo "Key: $phantu['key']; Value: $phantu['value']<br />n";


}


?> 


Đối với mảng nhiều chiều thỉ cách làm cũng tương tự, chỉ phức tạp hơn là thêm 1 vòng lặp nữa.



view plaincopy to clipboardprint?




  1. <?php  


  2. $sanpham = array( array("ITL","INTEL","HARD"),  


  3. array("MIR", "MICROSOFT","SOFT"),   


  4. array("PHP", "PHPVN.ORG","TUTORIAL")  


  5.                          );  


  6. for ($row = 0; $row < 3; $row++)  


  7. {  


  8. for ($col = 0; $col <3; $col++)  


  9.         {  


  10. echo "|".$sanpham[$row][$col];  


  11.          }  


  12. echo "  


  13. ";  


  14. }  


  15. ?>  

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

Lọc bỏ dấu tiếng việt trong PHP

 

Friday, 9. January 2009, 13:21:28

tiếng việt, PHP

Trong quá trình lập trình, có lúc chúng ta muốn lọc bỏ dấu tiếng Việt. (để search chẳng hạn). Tôi xin nêu ra một cách để cách để các bạn tham khảo:
Giả sử ta có một chuỗi :

<?
$cs="Thật là lắm chuyện";

$marTViet=array("à","á","ạ","ả","ã","â","ầ","ấ","ậ","ẩ","ẫ","ă",
"ằ","ắ","ặ","ẳ","ẵ","è","é","ẹ","ẻ","ẽ","ê","ề"
,"ế","ệ","ể","ễ",
"ì","í","ị","ỉ","ĩ",
"ò","ó","ọ","ỏ","õ","ô","ồ","ố","ộ","ổ","ỗ","ơ"
,"ờ","ớ","ợ","ở","ỡ",
"ù","ú","ụ","ủ","ũ","ư","ừ","ứ","ự","ử","ữ",
"ỳ","ý","ỵ","ỷ","ỹ",
"đ",
"À","Á","Ạ","Ả","Ã","Â","Ầ","Ấ","Ậ","Ẩ","Ẫ","Ă"
,"Ằ","Ắ","Ặ","Ẳ","Ẵ",
"È","É","Ẹ","Ẻ","Ẽ","Ê","Ề","Ế","Ệ","Ể","Ễ",
"Ì","Í","Ị","Ỉ","Ĩ",
"Ò","Ó","Ọ","Ỏ","Õ","Ô","Ồ","Ố","Ộ","Ổ","Ỗ","Ơ"
,"Ờ","Ớ","Ợ","Ở","Ỡ",
"Ù","Ú","Ụ","Ủ","Ũ","Ư","Ừ","Ứ","Ự","Ử","Ữ",
"Ỳ","Ý","Ỵ","Ỷ","Ỹ",
"Đ");

$marKoDau=array("a","a","a","a","a","a","a","a","a","a","a"
,"a","a","a","a","a","a",
"e","e","e","e","e","e","e","e","e","e","e",
"i","i","i","i","i",
"o","o","o","o","o","o","o","o","o","o","o","o"
,"o","o","o","o","o",
"u","u","u","u","u","u","u","u","u","u","u",
"y","y","y","y","y",
"d",
"A","A","A","A","A","A","A","A","A","A","A","A"
,"A","A","A","A","A",
"E","E","E","E","E","E","E","E","E","E","E",
"I","I","I","I","I",
"O","O","O","O","O","O","O","O","O","O","O","O"
,"O","O","O","O","O",
"U","U","U","U","U","U","U","U","U","U","U",
"Y","Y","Y","Y","Y",
"D");
echo str_replace($marTViet,$marKoDau,$cs);
?>

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

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

Cài đặt Service Book (kích hoạt Browser, MMS,...) cho Blackberry trong 1 phút


Như đã biết có vài topic hướng dẫn cách cài browser cho Blackberry của Meoluoi và Anworm, tuy nhiên các cách từ trước đến nay đều phải remove file khiến cho Blackberry phải khởi động lại nhiều lần làm mất nhiều thời gian. Bạn có thể thực hiện cài browser rất đơn giản mà không cần phải làm nhiều bước phức tạp.
Hỏi - đáp
1, Browser là gì
Browser là phần mềm để lướt web thường có sẵn trong các bản ROM của Blackberry.
2, Tại sao tôi nên cài browser?
Bởi vì dùng Browser bạn mới có thể download file, cài phần mềm OTA như Jivetalk, operamini.... Ví dụ từ browser bạn truy cập đến trang beejive.com là có thể cài đặt trực tiếp lên Blackberry mà không cần phải download về máy tính rồi dùng BDM để cài.
3, Service Book là gì, tại sao phải restore file này.
Mặc định browser của Blackberry chỉ dùng được khi bạn dùng gói data của Blackberry, ở VN Viettel đang cung cấp các gói dịch vụ này. Các file service book này chứa cấu hình của nhà mạng, thường được người quản trị mạng gửi qua BIS/BES đến máy Blackberry của bạn.
Tuy nhiên 1 số thành viên đã sửa file này để có thể dùng được với máy Blackberry không dùng gói dữ liệu BIS/BES. Bạn cần phải restore file này mới kích hoạt được browser.
Hướng dẫn cài đặt
1,
1, Vào mục Options --> Advanced Options --> Service Book.
Giữ "Alt" và gõ tiếp S B E B.
Sẽ có cửa sổ hiện ra thông báo Legacy SB Restore enabled.
2, Bây giờ bạn chỉ việc download file servicebook về máy tính, giải nén. Sau đó dùng Blackberry Desktop Manager restore dữ liệu.

3, Sau khi restore file servicebook xong sẽ xuất hiện icon Browser ở ngoài cửa sổ chính.
Các lỗi thường gặp

1, Nếu bạn đã vào browser mà xuất hiện lỗi "Your device does not any Browser Configuration Service Book Entries. Please contact your service provider to enable the Browser on your device" thì hãy ra màn hình home của Blackberry, vào Options --> Advanced Options --> Browser .
Chọn Default browser configurationBrowser. Save rồi vào lại Browser.
2, Sau khi restore chỉ có Hotspot chứ không có Browser hoặc ko có gì.
Có thể bạn chưa cài file Browser vào máy. Bạn hãy mở Blackberry Desktop Manager, sau đó bật Application Loader. Ở phần danh sách các phần mềm, nếu Browser chưa tick thì bạn hãy tick vào ô này để cài đặt Browser. Lưu ý là phải cài đặt OS mới hiện danh sách các phần mềm hệ thống.
3, Nếu cài browser hoàn tất mà bạn không vào được mạng sẽ có 1 vài cách khắc phục.
- Khởi động lại máy bằng cách nhấn ALT+Cap+Del hoặc tháo pin rồi lắp lại pin.
- Kiểm tra phần Default Browser phải là Browser. Nếu để hotspot thì chỉ dùng được nếu máy có tín hiệu wifi.
- Thử truy cập opera mini hoặc gmail để chắc chắn sóng GPRS của nhà mạng vẫn hoạt động tốt. Hiện nay gói D50, D25 của Viettel không ổn định nên có 1 số thuê bao không thể truy cập được GPRS khi đăng kí gói này.
- Thử cài bản servicebook khác, tôi thấy ổn định nhất là service book all network. Tuy nhiên bản này chỉ dùng được browser mà không dùng được MMS...
Ngoài ra nếu ai muốn tìm hiểu sâu thêm về servicebook cũng có thể tham khảo của Anworm tại đây .
Cách cấu hình để Browser lướt web nhanh hơn Link
Servicebook để nhận MMS cho các mạng Link
Download file servicebook ở dưới hoặc sử dụng servicebook dành riêng từng mạng của thành viên Anworm.

Trích:

Service book Anworm TCP for All Network
Service book Anworm TCp & Wifi (select mode) Updatte 07-feb-2009: add email service Book to TCP-Wifi. work with all network.

Service book for Vietnam network - Viettel - Mobifone - Vinaphone

Viettel

Viettel BIS
Viettel anworm Ver 2.1

Mobifone

Mobi anworm Ver 2.1

Vinaphone

Thank to clive48 - mobile-files.

File Kèm Theo

File Type: rar
Browser_via_TCP_all_network_beta_V1.1.rar (522 Bytes, 9001 lần tải)

Khởi động và cài đặt Windows từ ổ USB

Để giảm giá sản phẩm, nhiều laptop, đặc biệt là netbook, không được trang bị ổ đĩa quang, gây khó khăn cho người sử dụng khi muốn nâng cấp hệ điều hành.

Thông thường, người dùng phải cài đặt hệ điều hành bằng cách khởi động từ đĩa CD/DVD. Trong trường hợp máy thiếu ổ quang, họ có thể tìm đến một cách giải quyết đơn giản là cài đặt từ USB nhờ tiện ích miễn phí WinToFlash.

Yêu cầu:

- USB có dung lượng tối thiểu 3 GB để chứa bộ cài Windows.

- Format USB với định dạng NTFS: Click chuột phải vào biểu tượng USB trong My Computer > Format > chọn NTFS tại mục File System. Lưu ý: sao lưu toàn bộ dữ liệu trước khi format.

- Máy tính thứ 2 có ổ đĩa quang (CD/DVD) để đọc đĩa.

- Đĩa cài đặt Windows (có thể tìm mua tại các cửa hàng tin học). Nếu chỉ có file iso, có thể sử dụng Virtual Clone Drive (download tại đây) để tạo đĩa ảo.

Các bước tiến hành:

- Tải chương trình WinToFlash.

- Đặt đĩa cài Windows vào ổ đĩa quang và cắm USB vào máy.

- Giải nén file download được và kích hoạt WinToFlash.exe.

Lưu ý: Một số máy sẽ xuất hiện hộp thoại lỗi: "WinToFlash DLP_NotFound". Bấm OK để bỏ qua.

- Trên giao diện chính, bấm vào Service > Switch to Wizard Mode. Điều này sẽ đưa người dùng đến wizard, giúp tự động hóa hầu như toàn bộ quá trình cài đặt về sau.

- Bấm Next ở màn hình tiếp theo để tiếp tục quá trình.

- Hộp thoại Windows file path : đường dẫn ổ quang chứa đĩa cài đặt Windows. Hộp thoại USB drive : chỉ đường dẫn đến ổ USB đang được cắm trên máy tính.

- Click Next để tiếp tục.

- Chọn "I Accept…" ở hộp thoại tiếp theo và nhấn Continue, chương trình sẽ bắt đầu format lại USB. Đảm bảo rằng tất cả các dữ liệu đã được sao lưu trước khi nhấn OK.

- Quá trình chuyển đổi bộ cài từ đĩa sang USB sẽ diễn ra cho tới khi người dùng thấy thông báo "Done".

Lúc này, có thể sử dụng USB trên để khởi động và cài đặt Windows trên một laptop/netbook khác mà không cần đến ổ quang để đọc đĩa.

Lưu ý: Một số máy tính có thể yêu cầu người dùng thay đổi thiết lập BIOS để có thể khởi động từ USB. Họ có thể đọc thêm hướng dẫn kèm theo máy nếu chưa biết cách thay đổi các thiết lập của BIOS.

Thứ Tư, 26 tháng 8, 2009

WinDriver Ghost 2.06 Enterprise: Sao lưu, phục hồi driver "thông minh"

Khi cài lại máy tính, điều đau đầu nhất là phải tìm và cài lại driver cho các thiết bị. Vấn đề này sẽ càng trở nên phức tạp nếu bạn làm mất đĩa CD driver của thiết bị đó. Do vậy ngay từ bây giờ, khi máy bạn đang hoạt động tốt, hãy sao lưu lại driver bằng phần mềm WinDriver Ghost 2.06 Enterprise.

WinDriver Ghost 2.06 Enterprise sẽ giúp bạn tìm và sao lưu một phần hay toàn bộ driver hiện có, đóng gói lại thành file .EXE tự cài đặt. Khi máy tính có bất kỳ sự cố nào phải cài lại máy, bạn sẽ có thể phục hồi nhanh chóng driver từ file .EXE đã tạo mà không cần phải nhọc công đi tìm driver cho nó nữa. Ngoài ra chương trình còn có khả năng tự cập nhật driver mới nhất cho thiết bị của bạn.

Tải về tại đây