Xoay mảng PHP

VẤN ĐỀ. bạn muốn giá trị của 'khóa con' bên dưới là khóa của mảng. Ngoài ra (mặc dù có thể không biết đơn giản bằng cách nhìn) các khóa hiện tại là mã lỗi và bạn muốn xoay chúng thành các phần tử mảng con bên dưới khóa 'mã', thay thế phần tử 'khóa con' sẽ không phải là các khóa ngoài cùng

$by_code = array(
  404 => ['subkey'=>'subkey-val-DOH','subkey2'=>'subkey2-val-1'],
  302 => ['subkey'=>'subkey-val-one','subkey2'=>'subkey2-val-2'],
  418 => ['subkey'=>'subkey-val-DOH','subkey2'=>'subkey2-val-3'],
  422 => ['subkey'=>'subkey-val-two','subkey2'=>'subkey2-val-4'],
);
function pretty_print($a){echo json_encode($a,JSON_PRETTY_PRINT)."\n
\n";}

mảng_xoay()

array_rotate() giống như array_flip() chỉ dành cho mảng hai chiều. Có thể có nhiều hơn hai chiều nhưng giá trị của $subkey không thể là một mảng khác và phải là một khóa hợp lệ

pretty_print( array_rotate($by_code, 'subkey', 'code') );

đầu ra

[
  "subkey-val-DOH"=>[ "subkey2"=>"subkey2-val-3", "code"=>404 ],
  "subkey-val-one"=>[ "subkey2"=>"subkey2-val-2", "code"=>302 ]
  "subkey-val-two"=>[ "subkey2"=>"subkey2-val-4", "code"=>422 ],
]

mảng_xoay_loại()

array_rotate_category() giống như array_rotate() chỉ khác là nó tránh ghi đè các giá trị trùng lặp của $subkey bằng cách tạo các bộ chứa mảng "category" cho từng giá trị có thể có của $subkey. Vùng chứa mảng bổ sung này sẽ được tạo ngay cả khi chỉ có một khóa con với một giá trị cụ thể (và sẽ không gây ra xung đột)

pretty_print( array_rotate_category($by_code, 'subkey', 'code') );

đầu ra

[
  "subkey-val-DOH"=>[
    0=>[ "subkey2"=>"subkey2-val-1", "code"=>404 ],
    1=>[ "subkey2"=>"subkey2-val-3", "code"=>404 ]
  ],
  "subkey-val-one"=>[
    0=>[ "subkey2"=>"subkey2-val-2", "code"=>302 ]
  ],
  "subkey-val-two"=>[
    0=>[ "subkey2"=>"subkey2-val-4", "code"=>422 ]
  ]
]

mảng_rotate_jagged()

array_rotate_jagged() là phiên bản thích ứng của array_rotate_category() nghĩa là nó sẽ chỉ tạo một danh mục nếu xảy ra xung đột. Điều này có nghĩa là mảng cuối cùng được trả về là "lởm chởm", nghĩa là mỗi phần tử có thể có độ sâu chiều khác nhau (có thể là một mảng hoặc một mảng các mảng)

pretty_print( array_rotate_jagged($by_code, 'subkey', 'code') ); 

đầu ra

[
  "subkey-val-DOH"=>[
    0=>[ "subkey2"=>"subkey2-val-1", "code"=>404 ]
    1=>[ "subkey2"=>"subkey2-val-3", "code"=>418 ]
  ],
  "subkey-val-one"=>[ "subkey2"=>"subkey2-val-2", "code"=>302 ],
  "subkey-val-two"=>[ "subkey2"=>"subkey2-val-4", "code"=>422 ]
]

Ba phương thức sau đây áp dụng các quy trình tương tự được thấy trong array_rotate(), array_rotate_category() và array_rotate_jagged() nhưng thực hiện như vậy cho mọi khóa bên trong cũng như khóa ngoài cùng

Mảng được trả về là một mảng trong đó mỗi khóa là kết quả tìm kiếm cho từng khóa con, chỉ hiển thị kết quả CUỐI CÙNG

create_rotations()

create_rotations() là phiên bản lớn của array_rotate()

pretty_print( create_rotations($by_code, 'code') );

đầu ra

[
    "code"=>[
        404=>[ "subkey"=>"subkey-val-DOH", "subkey2"=>"subkey2-val-1" ],
        302=>[ "subkey"=>"subkey-val-one", "subkey2"=>"subkey2-val-2" ],
        418=>[ "subkey"=>"subkey-val-DOH", "subkey2"=>"subkey2-val-3" ],
        422=>[ "subkey"=>"subkey-val-two", "subkey2"=>"subkey2-val-4" ]
    ],
    "subkey"=>[
        "subkey-val-DOH"=>[ "subkey2"=>"subkey2-val-3", "code"=>404 ],
        "subkey-val-one"=>[ "subkey2"=>"subkey2-val-2", "code"=>302 ],
        "subkey-val-two"=>[ "subkey2"=>"subkey2-val-4", "code"=>422 ]
    ],
    "subkey2"=>[
        "subkey2-val-1"=>[ "subkey"=>"subkey-val-DOH", "code"=>404 ],
        "subkey2-val-2"=>[ "subkey"=>"subkey-val-one", "code"=>302 ],
        "subkey2-val-3"=>[ "subkey"=>"subkey-val-DOH", "code"=>418 ],
        "subkey2-val-4"=>[ "subkey"=>"subkey-val-two", "code"=>422 ]
    ]
]
CHỨC NĂNG MẢNG PHỤ 2. SẮP XẾP

tạo_sorts()

create_sorts() là phiên bản lớn của array_rotate_category()

GHI CHÚ. Khóa chính (nếu được cung cấp) vẫn được "phân thành mảng" khi sắp xếp bảng tra cứu được tạo cho nó NGAY CẢ mặc dù không thể xảy ra xung đột. Điều này là để bạn có một cách phổ biến để xử lý tra cứu (bạn sẽ luôn có cùng độ sâu của mảng. ) Nói cách khác, thậm chí nghĩ rằng chỉ nên có một "kết quả" nếu bạn tìm kiếm theo khóa chính, bạn sẽ nhận được một mảng có một giá trị

pretty_print( create_sorts($by_code, 'code') );

đầu ra

pretty_print( array_rotate($by_code, 'subkey', 'code') );
0

create_sorts_jagged()

create_sorts_jagged() là phiên bản lớn của array_rotate_jagged()

pretty_print( array_rotate($by_code, 'subkey', 'code') );
1

đầu ra

pretty_print( array_rotate($by_code, 'subkey', 'code') );
2

create_sorts_jagged()

create_sorts_jagged() là phiên bản lớn của array_rotate_jagged()

pretty_print( array_rotate($by_code, 'subkey', 'code') );
3

đầu ra

pretty_print( array_rotate($by_code, 'subkey', 'code') );
4

create_sorts_jagged()

create_sorts_jagged() là phiên bản lớn của array_rotate_jagged()

pretty_print( array_rotate($by_code, 'subkey', 'code') );
5

đầu ra

pretty_print( array_rotate($by_code, 'subkey', 'code') );
6CHỨC NĂNG MẢNG CON 3. LÀM PHẲNG VÀ HỢP NHẤT

pretty_print( array_rotate($by_code, 'subkey', 'code') );
7

mảng_phẳng()

array_flatten() biến hai chiều thành một chiều trong khi vẫn giữ nguyên thứ tự tuần tự. Cả mảng cấp cao nhất và thứ hai đều có các khóa số nguyên được lập chỉ mục lại theo trình tự liên tiếp

ví dụ sử dụng

[
  "subkey-val-DOH"=>[ "subkey2"=>"subkey2-val-3", "code"=>404 ],
  "subkey-val-one"=>[ "subkey2"=>"subkey2-val-2", "code"=>302 ]
  "subkey-val-two"=>[ "subkey2"=>"subkey2-val-4", "code"=>422 ],
]
4 ở trên

pretty_print( array_rotate($by_code, 'subkey', 'code') );
8

đầu ra

pretty_print( array_rotate($by_code, 'subkey', 'code') );
9

Nếu đối số 2 $safe được đặt thành true, một mảng sẽ không được trả về nếu tìm thấy các khóa chuỗi trùng lặp. Nếu đối số 2 $fatal là sai, false sẽ được trả về trong trường hợp này. Nếu nó không sai, một lỗi nghiêm trọng sẽ xảy ra. Nếu fatal được đặt thành một chuỗi, nó sẽ được sử dụng làm nhãn cho thông báo lỗi

merge_subarrays()

merge_subarrays() loại bỏ các mảng con khỏi một mảng và hợp nhất chúng lại với nhau thành một mảng khác. Giá trị trả về là một mảng gồm hai mảng có khóa là

[
  "subkey-val-DOH"=>[ "subkey2"=>"subkey2-val-3", "code"=>404 ],
  "subkey-val-one"=>[ "subkey2"=>"subkey2-val-2", "code"=>302 ]
  "subkey-val-two"=>[ "subkey2"=>"subkey2-val-4", "code"=>422 ],
]
5 và
[
  "subkey-val-DOH"=>[ "subkey2"=>"subkey2-val-3", "code"=>404 ],
  "subkey-val-one"=>[ "subkey2"=>"subkey2-val-2", "code"=>302 ]
  "subkey-val-two"=>[ "subkey2"=>"subkey2-val-4", "code"=>422 ],
]
6. Nội dung của 'top' không được lập chỉ mục lại và có thể có khoảng trống trong các khóa số nguyên

ví dụ sử dụng

[
  "subkey-val-DOH"=>[ "subkey2"=>"subkey2-val-3", "code"=>404 ],
  "subkey-val-one"=>[ "subkey2"=>"subkey2-val-2", "code"=>302 ]
  "subkey-val-two"=>[ "subkey2"=>"subkey2-val-4", "code"=>422 ],
]
4 ở trên

[
  "subkey-val-DOH"=>[ "subkey2"=>"subkey2-val-3", "code"=>404 ],
  "subkey-val-one"=>[ "subkey2"=>"subkey2-val-2", "code"=>302 ]
  "subkey-val-two"=>[ "subkey2"=>"subkey2-val-4", "code"=>422 ],
]
0

đầu ra

[
  "subkey-val-DOH"=>[ "subkey2"=>"subkey2-val-3", "code"=>404 ],
  "subkey-val-one"=>[ "subkey2"=>"subkey2-val-2", "code"=>302 ]
  "subkey-val-two"=>[ "subkey2"=>"subkey2-val-4", "code"=>422 ],
]
1

Nếu đối số thứ hai $safe được đặt thành true, các khóa trùng lặp không thể bị ghi đè và thay vào đó, sai được trả về

argv_and_vars()

Tương tự như cả func_get_args() và merge_subarrays() chỉ không cần đối số đầu tiên vì nó là đối số của người gọi (từ một hàm hoặc phương thức). Sự trở lại giống như merge_subarrays() chỉ có

[
  "subkey-val-DOH"=>[ "subkey2"=>"subkey2-val-3", "code"=>404 ],
  "subkey-val-one"=>[ "subkey2"=>"subkey2-val-2", "code"=>302 ]
  "subkey-val-two"=>[ "subkey2"=>"subkey2-val-4", "code"=>422 ],
]
5 được gọi là
[
  "subkey-val-DOH"=>[ "subkey2"=>"subkey2-val-3", "code"=>404 ],
  "subkey-val-one"=>[ "subkey2"=>"subkey2-val-2", "code"=>302 ]
  "subkey-val-two"=>[ "subkey2"=>"subkey2-val-4", "code"=>422 ],
]
9 và
[
  "subkey-val-DOH"=>[ "subkey2"=>"subkey2-val-3", "code"=>404 ],
  "subkey-val-one"=>[ "subkey2"=>"subkey2-val-2", "code"=>302 ]
  "subkey-val-two"=>[ "subkey2"=>"subkey2-val-4", "code"=>422 ],
]
6 được gọi là
pretty_print( array_rotate_category($by_code, 'subkey', 'code') );
1

Làm cách nào để thay đổi vị trí của một mảng trong PHP?

Nó hoạt động như thế nào. .
Đầu tiên. xóa/ghép phần tử khỏi mảng
Thứ hai. nối mảng thành hai phần tại vị trí muốn chèn phần tử
Hợp nhất ba phần lại với nhau

Array_shift trong PHP là gì?

Hàm array_shift() xóa phần tử đầu tiên khỏi mảng và trả về giá trị của phần tử đã xóa . Ghi chú. Nếu các khóa là số, tất cả các phần tử sẽ nhận được các khóa mới, bắt đầu từ 0 và tăng thêm 1 (Xem ví dụ bên dưới).

Thuật toán nào là tốt nhất để xoay mảng?

Thuật toán hoán đổi khối block swap algorithm để xoay mảng là một thuật toán hiệu quả được sử dụng để xoay mảng. Nó có thể thực hiện công việc của bạn với độ phức tạp thời gian O(n). Vì vậy, trong phép quay mảng, chúng ta được cung cấp một mảng arr[] có kích thước n và một số k xác định số không.

Xoay một mảng là gì?

Việc xoay mảng đơn giản có nghĩa là di chuyển các phần tử mảng của mảng đến các vị trí đã chỉ định . Chúng ta có thể xoay một mảng theo cả hai hướng. e. theo chiều kim đồng hồ và ngược chiều kim đồng hồ.