05/10/2018, 16:30

Mảng (Array) và Chuỗi (string)

Một mảng là một cấu trúc dữ liệu mà lưu giữ một hoặc nhiều kiểu giá trị giống nhau trong một giá trị đơn. Chuỗi là các dãy ký tự, giống như "Hoc PHP co ban va nang cao tai code24h.com".

Có 3 loại mảng khác nhau và mỗi giá trị mảng được truy cập bởi sử dụng một ID, mà được gọi là chỉ mục mảng.

  • Mảng số nguyên − Một mảng có chỉ mục ở dạng số. Giá trị được lưu trữ và truy cập tuyến tính.

  • Mảng liên hợp − Một mảng với chỉ mục ở dạng chuỗi kí tự. Mảng này lưu trữ các giá trị phần tử bằng sự kết hợp với các giá trị key thay vì trong một trật tự chỉ mục tuyến tính nghiêm ngặt như mảng số nguyên.

  • Mảng đa chiều − Một mảng chứa một hoặc nhiều mảng và các giá trị được truy cập bằng cách sử dụng nhiều chỉ mục.

  • Mảng số nguyên trong PHP

    Các mảng loại này có thể lưu trữ các số, các chuỗi và bất kỳ đối tượng nào, nhưng chỉ mục mảng thì vẫn được biểu diễn bởi các số. Theo mặc định, chỉ mục mảng bắt đầu từ 0.

    Ví dụ

    Mảng này có thể lưu trữ số, chuỗi và bất kì đối tượng nào, nhưng chỉ mục của chúng sẽ được biểu diễn ở dạng số. Theo mặc định chỉ mục mảng bắt đầu từ 0.

    Dưới đây là ví dụ minh họa cách tạo và truy cập mảng số nguyên trong PHP.

    Ở đây, chúng ta đã sử dụng hàm array() để tạo mảng. Hàm này được giải thích trong chương phụ: Hàm mảng trong PHP ở trên.

  •          $numbers_key = array( 1, 2, 3, 4, 5);
             
             foreach( $numbers_key as $value )
             {
                echo "Giá trị phần tử mảng là $value <br />";
             }
             
             /* Phương thức thứ hai để tạo mảng trong PHP. */
             $numbers[0] = "one";
             $numbers[1] = "two";
             $numbers[2] = "three";
             $numbers[3] = "four";
             $numbers[4] = "five";
             
             foreach( $numbers as $value )
             {
                echo "Giá trị phần tử mảng là $value <br />";
             }
             //Kết Quả là
            // Giá trị phần tử mảng là 1 
            // Giá trị phần tử mảng là 2 
            // Giá trị phần tử mảng là 3 
            // Giá trị phần tử mảng là 4 
            // Giá trị phần tử mảng là 5 
            // Giá trị phần tử mảng là one 
            // Giá trị phần tử mảng là two 
            // Giá trị phần tử mảng là three 
            // Giá trị phần tử mảng là four 
            // Giá trị phần tử mảng là five 
    

$array_combine:

Trộn 2 mảng $numbers_keys và $numbers_value thành một mảng kết hợp với $numbers là danh sách keys, $numbers_value là danh sách value tương ứng với key. Điều kiện là 2 mảng này phải bằng nhau.

Ví Dụ

        $numbers_key = array( 1, 2, 3, 4, 5);
        $numbers_value = array( "one","two","three","four","five");
        
        dd(array_combine($numbers_key,$numbers_value));
        //Kết Quả là array:5 [▼
        //   1 => "one"
        //   2 => "two"
        //   3 => "three"
        //   4 => "four"
        //   5 => "five"
        // ]

Mảng liên hợp trong PHP

Các mảng liên hợp là khá giống với các mảng số nguyên về tính năng, nhưng chúng khác nhau về chỉ mục. Mảng liên hợp sẽ có chỉ mục ở dạng chuỗi để mà bạn có thể thiết lập một liên kết mạnh giữa key và value.

Để lưu giữ lương của nhân viên trong một mảng, một mảng chỉ mục số sẽ không là lựa chọn tốt nhất. Thay vào đó, chúng ta sẽ sử dụng các tên nhân viên như là các key trong mảng liên hợp, và value sẽ là lương tương ứng của họ.

Ví Dụ

//Cách 1
$luong_nhan_vien = array[ 'bui' => high,'huu' => medium ,'tu' => low];

//cách 2
$luong_nhan_vien['bui'] = "high";
$luong_nhan_vien['huu'] = "medium";
$luong_nhan_vien['tu'] = "low";
echo "Mức lương của nhân viên hoang là ". $luong_nhan_vien['bui'] . "<br />";
echo "Mức lương của nhân viên manh là ".  $luong_nhan_vien['huu']. "<br />";
echo "Mức lương của nhân viên huong là ".  $luong_nhan_vien['tu']. "<br />";
//Kết quả là
// Mức lương của nhân viên hoang là high
// Mức lương của nhân viên manh là medium
// Mức lương của nhân viên huong là low

Mảng đa chiều trong PHP

Trong một mảng đa chiều, mỗi phần tử cũng có thể là một mảng. Và mỗi phần tử trong một mảng phụ có thể là một mảng, và cứ tiếp tục như vậy. Các giá trị trong mảng đa dạng được truy cập bởi sử dụng nhiều chỉ mục.

Ví Dụ: về điểm số

 $diemThi = array( 
            "bui" => array
            (
               "monVatLy" => 7,
               "monToan" => 8,  
               "monHoa" => 9
            ),
            
            "anh" => array
            (
               "monVatLy" => 7,
               "monToan" => 9,
               "monHoa" => 6
            ),
            
            "tu" => array
            (
               "monVatLy" => 8,
               "monToan" => 8,
               "monHoa" => 9
            )
         );
         
         /* truy cập các giá trị của mảng đa chiều */
         echo "Điểm thi môn Vật Lý của bùi là: " ;
         echo $diemThi['bui']['monVatLy'] . "<br />"; 
         
         echo "Điểm thi môn Toán của anh là: ";
         echo $diemThi['anh']['monToan'] . "<br />"; 
         
         echo "Điểm thi môn Hóa của tú là: " ;
         echo $diemThi['tu']['monHoa'];
        //Kết quả là
        //Điểm thi môn Vật Lý của bùi là: 7
        // Điểm thi môn Toán của anh là: 9
        // Điểm thi môn Hóa của tú là: 9

Cách hàm thường xuyên sử dụng trong mảng

1,array_count_values ( $array )

Đếm số lần xuất hiện của các phần tử giống nhau trong mảng $array và trả về một mảng kết quả.

$array = array(1, "hello", 1, "world", "hello");
dd(array_count_values($array));
//Kết quả là
//array:3 [▼
//   1 => 2
//   "hello" => 2
//   "world" => 1
// ]

 

 2,is_array($variable).

Kiểm tra một biến có phải kiểu mảng hay không, kết quả trả về true nếu phải và false nếu không phải.

$var = [
    'php',
    'js',
    'css'
];  
if (is_array($var)) {
    echo 'đây là một mảng dữ liệu';
}else{
    echo 'đây không phải là một mảng dữ liệu';
}

3,in_array($needle, $haystackarray)

Kiểm tra giá trị $haivan.vn có nằm trong mảng $array không. trả về true nếu có và flase nếu không có.

 

$array = array('hello', 'nobody', 'haivan.vn');
  
// Kết quả là true
var_dump(in_array('haivan.vn', $array));
  
// Kết quả là false
var_dump(in_array('vn', $array));

4,array_key_exists($key, $searcharray)

Kiểm tra key $key có tồn tại trong mảng $array không, trả về true nếu có và false nếu không có.

$array = array(
    'username' => 'buitu',
    'email' => 'buitu@gmail.com',
    'website' => 'buianhtu.com'
);
  
// Trả về true
var_dump(array_key_exists('username', $array));
  
// Trả về false
var_dump(array_key_exists('otherkey', $array));

5,array_unique( $array )

Loại bỏ giá trị trùng trong mảng $array.

$array = array('buianhtu.com', 'buianhtu.com');
$result = array_unique($array);
  
// Kết quả mảng chỉ còn 1 giá trị buianhtu.com
dd($result);

6,array_values ($array )

Chuyển mảng $array sang dạng mảng chỉ mục.

$array = array(
    'username' => 'admin',
    'password' => '123456'
);
  
var_dump(array_values($array));

Chuỗi (String)

Chuỗi là các dãy ký tự, giống như "Code ngày code đêm code thêm chủ nhật".

Ví dụ về chuỗi đúng cú pháp

$string_1 = "Vi du mot chuoi trong PHP";
$string_2 = "Code ngày code đêm code thêm chủ nhật";
$string_0 = ""; // ví dụ một chuỗi không có ký tự nào

Khi sử dụng chuỗi với dấu nháy đơn, nó sẽ được đối xử như là các hằng, và in ra chính chuỗi đó. Trong khi sử dụng với dấu nháy kép, nó thay thế các biến với giá trị của chúng cũng như thông dịch các dãy ký tự cụ thể.

Ví Dụ

   $bien_chuoi = "name";
   $bien_chuoi_hang = 'Chuỗi $bien_chuoi sẽ không được in!\\n';
   
   print($bien_chuoi_hang);
   print "<br />";
   
   $bien_chuoi_hang = "Chuỗi $bien_chuoi sẽ được in!\\n";
   
   print($bien_chuoi_hang);

Tìm độ dài chuỗi trong PHP - Hàm strlen() trong PHP

Hàm strlen() trong PHP được sử dụng để tìm độ dài của một chuỗi.

Ta sẽ tính độ đài của "Code ngày code đêm code thêm chủ nhật"

$string = "Code ngày code đêm code thêm chủ nhật";
echo strlen($string);
// độ đài là 45 ký tự

Tìm ký tự hoặc chuỗi trong chuỗi - Hàm strpos() trong PHP

Hàm strops() được sử dụng để tìm một chuỗi hoặc ký tự bên trong một chuỗi.

Nếu một so khớp được tìm thấy, hàm này sẽ trả về vị trí của so khớp đầu tiên. Nếu không tìm thấy một so khớp nào, nó sẽ trả về FALSE.

$string = "Code ngày code đêm code thêm chủ nhật";
echo strpos($string,"đêm");
// từ đêm ở thứ 16

 

+2