Chuyển đổi giá trị thành mảng khóa php

Mảng trong PHP xử lý đồng nghĩa với số nguyên và chuỗi số nguyên. Nếu bạn đặt

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
5 và truy cập vào
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
6, bạn sẽ nhận được
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
7. Điều này là do php đã sắp xếp khóa chuỗi của bạn thành một số nguyên trước khi gán nó; . PHP cũng tung hứng trong quá trình truy cập, điều đó có nghĩa là nếu bạn cố gắng truy cập
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
8 bằng
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
9 thì nó sẽ hoạt động. Do đó, không có sự phân biệt thực sự giữa số nguyên chuỗi và số nguyên thực, bạn có thể sử dụng chúng thay thế cho nhau

Hãy nhớ rằng

$var = [string]['1.0' + 0]; // $var is '1'
$var = [string]['1.5' + 0]; // $var is '1.5'
0 không bằng
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
7 hoặc
$var = [string]['1.0' + 0]; // $var is '1'
$var = [string]['1.5' + 0]; // $var is '1.5'
2 khi so sánh chặt chẽ. Điều này cũng đúng với các khóa mảng. bạn có thể có cả
$var = [string]['1.0' + 0]; // $var is '1'
$var = [string]['1.5' + 0]; // $var is '1.5'
3 và
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
9 và chúng sẽ là những phần tử khác nhau nhưng không phải là
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
8 và
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
9

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
2

Có thể hành vi đáng lo ngại nhất trong các khóa mảng PHP xảy ra khi bạn cố gắng sử dụng các số dấu phẩy động thực làm khóa

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";

Các chuỗi dấu phẩy động được chuyển đổi thành khóa số nguyên, loại bỏ thành phần thập phân. Đây là lý do khá chính đáng để bọc tất cả các khóa trong chuỗi khi truy cập hoặc gán để an toàn vì điều này sẽ giữ lại số float và không ảnh hưởng đến số nguyên

hành vi không mong muốn

Gói trong chuỗi hoạt động nhưng không hoạt động khi bạn thực sự muốn

$var = [string]['1.0' + 0]; // $var is '1'
$var = [string]['1.5' + 0]; // $var is '1.5'
3 giống như
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
8. Cũng thế

  1. Bạn có thể không muốn cho phép cả
    $arr = array[1=>1];
    $arr[1.1] = "we just clobbered [1] !!";
    9 và
    $var = [string]['1.0' + 0]; // $var is '1'
    $var = [string]['1.5' + 0]; // $var is '1.5'
    3 một cách rõ ràng
  2. Bạn có thể không muốn cho phép cả
    $var = [string]['1.0' + 0]; // $var is '1'
    $var = [string]['1.5' + 0]; // $var is '1.5'
    3 và
    $arr = array[1=>1];
    $arr[1.1] = "we just clobbered [1] !!";
    92 một cách rõ ràng. Các số 0 ở cuối có thể gây ra sự cố
  3. Bạn có thể không muốn php coi
    $arr = array[1=>1];
    $arr[1.1] = "we just clobbered [1] !!";
    93 như thể bạn đã gõ
    $arr = array[1=>1];
    $arr[1.1] = "we just clobbered [1] !!";
    8
Vệ sinh các phím số

Nếu bạn đang tạo một lớp ArrayObject, bạn có thể vệ sinh các phím số. Bạn cũng có thể làm điều này với các mảng bình thường, gói phép gán và truy cập trong các hàm

Nếu bạn thêm một số vào một chuỗi số, bạn sẽ nhận được số float hoặc int tùy thuộc vào bất kỳ thứ gì sẽ không làm mất độ phân giải. Nếu bạn thêm

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
95, bạn sẽ được thả nổi. Chuyển đổi
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
96 thành chuỗi sẽ giảm số thập phân, đây là điều chúng tôi muốn

$var = [string]['1.0' + 0]; // $var is '1'
$var = [string]['1.5' + 0]; // $var is '1.5'

Điều này hoạt động khá tốt để giải quyết cả ba vấn đề. Nhưng nếu bạn có một chuỗi không phải là số, bạn sẽ vừa đọc sai khóa của mình. Bạn có thể bọc câu lệnh trên và if

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
9

Điều này hoạt động tốt nhưng nếu bạn thực sự bị ám ảnh bởi việc tối ưu hóa hiệu suất mã của mình, bạn có thể muốn tránh lệnh gọi đến is_numeric. Nếu bạn so sánh lỏng lẻo với

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
97 hoặc
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
98, kết quả ở trên với bản gốc, chúng sẽ 'bằng nhau' nếu bản gốc là một chuỗi float, int hoặc số [int hoặc float]

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
8

Hoặc nếu bạn muốn từ chối hoàn toàn bất kỳ số nào không phải là số, bạn có thể thực hiện các thao tác sau và sau đó chỉ cần sử dụng

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
99 chứ không phải
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
80

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
1

ksort và loại khóa

ksort có hành vi khác nếu bạn có các khóa chuỗi không phải là số trong mảng của mình. Không có chúng, nó có một đặc điểm rất đẹp

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
2

Điều này dẫn đến một thứ tự số đẹp, bất kể bạn có số nguyên, số nguyên chuỗi hay chuỗi float

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
3

Điều này có thể rất hữu ích, không giống như sự tàn phá xảy ra khi bạn kết hợp một số phím chuỗi không phải là số

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
4

đầu ra

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
5

Không tốt lắm. nó đặt chuỗi số [float, vì chuỗi int trở thành int] trước, sau đó là chuỗi alpha, sau đó là số nguyên. Thật thú vị, tất cả những gì quan trọng để duy trì sự tốt đẹp này là ký tự đầu tiên của bạn là một số

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
0

đầu ra

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
1

Điều này có thể hữu ích. Bạn có thể lọc ra các phím xấu với

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
2

nhưng điều này sẽ chặn số âm hoặc số dương rõ ràng [

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
81] Vì vậy, bạn có thể muốn

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
3

Điều này tốt hơn vì một lý do khác. nó an toàn hơn vì

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
82 đảm bảo rằng bạn sẽ được để lại một chuỗi bất kể điều gì, điều này cũng rất quan trọng để tránh lỗi với
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
83

LƯU Ý rằng ở trên sẽ chuyển đổi

$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
84 hoặc
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
85 thành
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
86 nên phương pháp này có thể không phù hợp với số phiên bản. Điều này là do các chuỗi đó KHÔNG tung hứng với các số, cả với
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
87 và so sánh với
$arr = array[1=>1];
$arr[1.1] = "we just clobbered [1] !!";
97 chỉ bỏ dấu chấm và số cuối cùng. Nếu bạn có chuỗi kiểu số phiên bản, bạn có thể muốn vệ sinh bằng

Làm cách nào để chuyển đổi chuỗi thành khóa & giá trị mảng trong PHP?

Sau đây là danh sách đầy đủ các phương thức có thể được sử dụng trong PHP để chuyển đổi một chuỗi thành một mảng. .
hàm str_split[]
phát nổ["DELIMITER", STRING]
hàm preg_split[]
hàm str_word_count[]
Lặp thủ công qua chuỗi
Hàm json_decode[]
chức năng unserialize[]

Làm cách nào để tạo mảng bằng khóa trong PHP?

$arrayVariable = [ key1 => value1, key2 => value2, key3 => value3,. keyN => valueN, ];

Làm cách nào để lấy các khóa mảng trong PHP?

Nếu bạn có một giá trị và muốn tìm khóa, hãy sử dụng array_search[] như thế này. $arr = mảng ['đầu tiên' => 'a', 'thứ hai' => 'b', ]; .

Làm cách nào để trao đổi giá trị khóa trong PHP?

Hàm array_flip[] lật/trao đổi tất cả các khóa có giá trị liên kết của chúng trong một mảng.

Chủ Đề