Hướng dẫn php are array keys case sensitive - php là các phím mảng phân biệt chữ hoa chữ thường

Mảng PHP được thực hiện với các bảng băm. Cách một bảng băm hoạt động, theo thứ tự đầu tiên: nó băm đầu vào và sử dụng nó như một chỉ mục để tìm vị trí bộ nhớ phù hợp để chèn một đối tượng.

Bây giờ hãy tưởng tượng các mảng của bạn không nhạy cảm trường hợp. Thay vì thực hiện tra cứu băm đơn, bây giờ bạn phải thực hiện 2^(độ dài của chuỗi) Tra cứu băm. Hơn nữa, trong số những địa điểm này, bạn chọn cái nào? Đột nhiên, bảng băm đơn giản, thanh lịch của bạn đã trở nên phức tạp hơn nhiều, cả về mặt tính toán và trong việc thực hiện nó.

Hơn nữa, trong hầu hết các ngôn ngữ khác,

// Retrieve item 'A', without caring about case-sensitivity. Both lines of code will display the same result :
echo "Getting value of array['A'] : " . $array [ 'a' ] ;
echo "Getting value of array['A'] : " . $array [ 'A' ] ;
1 và
// Retrieve item 'A', without caring about case-sensitivity. Both lines of code will display the same result :
echo "Getting value of array['A'] : " . $array [ 'a' ] ;
echo "Getting value of array['A'] : " . $array [ 'A' ] ;
2 được đối xử khác nhau. PHP chắc chắn không phải lúc nào cũng tuân thủ nguyên tắc ít ngạc nhiên nhất, nhưng trong trường hợp này, nó có - và đó là cách nó nên như vậy.

Như những người dùng khác đã chỉ ra, hành vi này rất dễ dàng để có được nếu bạn mong muốn: chỉ cần chuyển đổi các khóa của bạn thành chữ thường trước khi chèn và/hoặc tham chiếu chúng.

Khóa có thể là một mảng PHP?

Không .Arrays chỉ có thể có số nguyên và dây làm chìa khóa.AssociativeArray class has been designed to implement associative arrays whose keys will be case-insensitive. It tries to mimic the built-in PHP array type to provide as much transparent access as possible.

Những gì không phải là trường hợp

// Create an array
$array = new AssociativeArray ( [ 'A' => 'Value of A', 'B' => 'Value of B', 'D' => 'Value of D', 'C' => 'Value of C' ] ) ;
// Retrieve item 'A', without caring about case-sensitivity. Both lines of code will display the same result :
echo "Getting value of array['A'] : " . $array [ 'a' ] ;
echo "Getting value of array['A'] : " . $array [ 'A' ] ;

Trong PHP, tên lớp cũng như tên chức năng/phương thức không nhạy cảm với trường hợp, nhưng nó được coi là thực hành tốt cho chúng các chức năng khi chúng xuất hiện trong tuyên bố của chúng.

GIỚI THIỆU

Lớp AssociativeArray đã được thiết kế để thực hiện các mảng liên kết có các khóa sẽ không nhạy cảm trường hợp. Nó cố gắng bắt chước loại mảng PHP tích hợp để cung cấp quyền truy cập trong suốt nhất có thể.

Một ví dụ cơ bản sẽ là:

Tại sao có mảng kết hợp với các khóa không nhạy cảm với trường hợp?

Nguồn gốc của lớp này xuất phát từ thói quen của tôi: Tôi đang sử dụng một số tệp cấu hình có định dạng của tệp Windows .ini, chẳng hạn như php.ini và luôn muốn các tên khóa không nhạy cảm với trường hợp.

Tôi nhận ra một ngày nào đó tôi đã nhân đôi một chút ở nơi khác cùng một mã cho phép truy cập một số mảng liên kết nhất định với các khóa không nhạy cảm với trường hợp và tôi đã nói với bản thân mình rằng các nhà phát triển khác có thể phải đối mặt với cùng một tình huống và có thể bị lỗi chính tả trong mã của họ, bởi vì Họ đã chỉ định một chữ hoa 'A' thay vì chữ thường 'A' khi truy cập vào một mục mảng bằng khóa của nó.

Đây là lý do tại sao tôi đã phát triển lớp này, mà tôi đang sử dụng rất nhiều mỗi lần tôi cần một mảng kết hợp với các khóa không nhạy cảm trường hợp.

Vì các mảng PHP sử dụng bên trong các bảng băm, trong đó các khóa mảng là các giá trị băm nhạy cảm trường hợp, nên một ngày nào đó bạn sẽ có thể sử dụng các mảng kết hợp với các khóa không nhạy cảm trường hợp. Đây là lý do duy nhất tại sao tôi phát triển lớp này.

Tất nhiên, nó có vẻ không đầy đủ (ví dụ, nó không thực hiện tất cả các chức năng sắp xếp khác nhau mà bạn có thể mong đợi), nhưng nó sẽ phù hợp với nhu cầu của bạn cho mục đích hàng ngày của bạn.

Và, tất nhiên, nó đã được tối ưu hóa để tránh các tính toán không cần thiết bất cứ khi nào bạn chèn hoặc xóa một mục khỏi mảng.

ĐỂ Ý

// Create an array
$array = new AssociativeArray ( [ 'A' => 'Value of A', 'B' => 'Value of B', 'D' => 'Value of D', 'C' => 'Value of C' ] ) ;
echo count ( $array ) ; 		// will output "4"
// Loop through array items using a traditional for() loop
// Will display :
//		Value of A
//		Value of B
//		Value of D
//		Value of C
for ( $i = 0 ; $i < count ( $array ) ; $i ++ ) 
	echo $array [$i] . "\n" ;
// use a foreach() loop to achieve the same result (but additionally displays the key name)
foreach ( $array  as $key => $item )
	echo "$key -> $item\n" ;
// Add a new element to the array 
$array [ 'newKey' ] 	=  'This is a new value' ;

Bạn có thể tìm thấy danh sách các phương thức có trong lớp này một chút kém và bạn sẽ đúng: Tôi muốn có một lớp phù hợp với nhu cầu hàng ngày của tôi và không có gì hơn (nhu cầu hàng ngày Câu hỏi rất cơ bản).

Tuy nhiên, nếu bạn có nhu cầu bổ sung, bạn có thể tự do thêm các phương pháp bạn chọn hoặc đơn giản là liên hệ với tôi để cung cấp một phiên bản mới; Tôi sẽ rất vui khi làm phong phú lớp học này dựa trên các đề xuất của bạn.

echo $array ['a' ] ;
echo $array -> A ;

TÀI LIỆU THAM KHẢO

echo $array [1] 	;  // Will echo "Value of B" ; 

$ status = $ mảng -> trong \ _array ($ value);

Kiểm tra nếu một mảng chứa giá trị được chỉ định. So sánh là nhạy cảm trường hợp.

Ví dụ sau đây sẽ lặp lại giá trị "B":

$array = new AssociativeArray ( [ 'A' => 100, 'B' => 101, 'C' => 102 ] ) ;

echo $ mảng -> KeyName (1);

$ status = $ mảng -> iin \ _array ($ value);

Kiểm tra nếu một mảng chứa giá trị được chỉ định. So sánh là không nhạy cảm trường hợp.

Phương thức trả về true nếu $ mảng chứa $ giá trị và sai nếu không.

$ status = $ mảng -> iin \ _subarray ($ value);

Kiểm tra xem một mảng có chứa giá trị được chỉ định trong một trong các mục mảng lồng nhau của nó không. So sánh là không nhạy cảm trường hợp.

Phương thức trả về true nếu $ mảng chứa $ giá trị và sai nếu không.

$ status = $ mảng -> iin \ _subarray ($ value);

Kiểm tra xem một mảng có chứa giá trị được chỉ định trong một trong các mục mảng lồng nhau của nó không. So sánh là không nhạy cảm trường hợp.

Phương thức trả về true nếu $ mảng chứa $ giá trị và sai nếu không.

$ status = $ mảng -> iin \ _subarray ($ value);

Kiểm tra xem một mảng có chứa giá trị được chỉ định trong một trong các mục mảng lồng nhau của nó không. So sánh là không nhạy cảm trường hợp.

Phương thức trả về true nếu $ mảng chứa $ giá trị và sai nếu không.

$ status = $ mảng -> iin \ _subarray ($ value);

Kiểm tra xem một mảng có chứa giá trị được chỉ định trong một trong các mục mảng lồng nhau của nó không. So sánh là không nhạy cảm trường hợp.

Ví dụ sau đây sẽ lặp lại giá trị "B":

$array = new AssociativeArray ( [ 'A' => 100, 'B' => 101, 'C' => 102 ] ) ;

echo $ mảng -> KeyName (1);

$ status = $ mảng -> iin \ _array ($ value);

Kiểm tra nếu một mảng chứa giá trị được chỉ định. So sánh là không nhạy cảm trường hợp.

Phương thức trả về true nếu $ mảng chứa $ giá trị và sai nếu không.

$ status = $ mảng -> iin \ _subarray ($ value);

Kiểm tra xem một mảng có chứa giá trị được chỉ định trong một trong các mục mảng lồng nhau của nó không. So sánh là không nhạy cảm trường hợp.

$ status = $ mảng -> trong \ _array ($ value);

Là trường hợp mảng

Mặc dù chúng nhạy cảm với trường hợp, bạn có thể sử dụng các chức năng trên chúng là trường hợp không nhạy cảm.Bạn có thể làm cho mảng tất cả các chữ thường, sau đó sử dụng strtolower () trên bất kỳ biến nào bạn muốn kiểm tra chống lại nó.they are case sensitive, you can use functions on them which are case insensitive. You could make the array all lowercase, then use strtolower() on any variable you want to test against it.

Là chìa khóa tồn tại trong mảng nhạy cảm?

Kiểm tra nếu một mảng chứa giá trị được chỉ định.So sánh là nhạy cảm trường hợp.Phương thức trả về true nếu $ mảng chứa $ giá trị và sai nếu không.Comparison is case-sensitive. The method returns true if $array contains $value, and false otherwise.

Khóa có thể là một mảng PHP?

Không .Arrays chỉ có thể có số nguyên và dây làm chìa khóa. Arrays can only have integers and strings as keys.

Những gì không phải là trường hợp

Trong PHP, tên lớp cũng như tên chức năng/phương thức không nhạy cảm với trường hợp, nhưng nó được coi là thực hành tốt cho chúng các chức năng khi chúng xuất hiện trong tuyên bố của chúng.class names as well as function/method names are case-insensitive, but it is considered good practice to them functions as they appear in their declaration.