Hướng dẫn php array flatten one level - mảng php san phẳng một cấp

Ai đó có thể thấy điều này hữu ích, tôi gặp vấn đề làm phẳng mảng ở một chiều nào đó, tôi sẽ gọi nó là chiều cuối cùng vì vậy, ví dụ, nếu tôi có mảng như:

array ( 'germany' => array ( 'cars' => array ( 'bmw' => array ( 0 => 'm4', 1 => 'x3', 2 => 'x8', ), ), ), 'france' => array ( 'cars' => array ( 'peugeot' => array ( 0 => '206', 1 => '3008', 2 => '5008', ), ), ), )

Or:

array ( 'earth' => array ( 'germany' => array ( 'cars' => array ( 'bmw' => array ( 0 => 'm4', 1 => 'x3', 2 => 'x8', ), ), ), ), 'mars' => array ( 'france' => array ( 'cars' => array ( 'peugeot' => array ( 0 => '206', 1 => '3008', 2 => '5008', ), ), ), ), )

Đối với cả hai mảng này khi tôi gọi phương thức bên dưới, tôi nhận được kết quả:

array ( 0 => array ( 0 => 'm4', 1 => 'x3', 2 => 'x8', ), 1 => array ( 0 => '206', 1 => '3008', 2 => '5008', ), )

Vì vậy, tôi đang làm phẳng kích thước mảng cuối cùng sẽ giữ nguyên, phương pháp bên dưới có thể được tái cấu trúc để thực sự dừng ở bất kỳ cấp độ nào:

function flattenAggregatedArray($aggregatedArray) { $final = $lvls = []; $counter = 1; $lvls[$counter] = $aggregatedArray; $elem = current($aggregatedArray); while ($elem){ while(is_array($elem)){ $counter++; $lvls[$counter] = $elem; $elem = current($elem); } $final[] = $lvls[$counter]; $elem = next($lvls[--$counter]); while ( $elem == null){ if (isset($lvls[$counter-1])){ $elem = next($lvls[--$counter]); } else{ return $final; } } } }

Hàm php array_flatten (). Chuyển đổi một mảng đa chiều thành một mảng một chiều.

Tệp này chứa văn bản unicode hai chiều có thể được giải thích hoặc biên dịch khác với những gì xuất hiện dưới đây. Để xem xét, hãy mở tệp trong một trình soạn thảo cho thấy các ký tự Unicode ẩn. Tìm hiểu thêm về các ký tự unicode hai chiều

- Phương pháp 2

Phương pháp thứ hai đơn giản hơn để viết nhưng ít dễ hiểu hơn vì việc triển khai của nó có thể trông phức tạp hơn phương pháp đầu tiên. Nó liên quan đến việc sử dụng các lớp PHP tiêu chuẩn và trình lặp mảng để lặp lại trên các mảng đa chiều. Lưu ý rằng có các biến và các thành phần khác liên quan cũng như để thực hiện các triển khai đệ quy thành các mảng làm phẳng.implementation can look more complicated than the first method. It involves the usage of standard PHP classes and array iterators to iterate over the multidimensional arrays. Note that there are variables and other components involved as well to execute recursive implementations to flatten arrays.

  • Thực hiện Phương pháp 2: Phần 1

Phương pháp này bắt đầu với việc tạo ra một biến số $ flattened và một thể hiện có thể được viết dưới dạng RecursiveArrayiterator () mới. Đây là một lớp PHP tiêu chuẩn cho phép lặp qua các mảng đa chiều do đó một mảng được truyền ở đây.“$flattened” variable and an instance that can be written as “new RecursiveArrayIterator()”. It is a standard PHP class that enables iteration over multidimensional arrays therefore an array is passed here.

Điều này được theo sau bởi việc tạo ra một biến số khác của $ flattened và một thể hiện có tên là RecursiveIteratorIterator (), đây là một lớp PHP tiêu chuẩn khác. Điều này cho phép lặp lại trên phần tử định lại () với đối tượng được truyền, điều này đòi hỏi phải sử dụng hàm iterator_to_array.“RecursiveIteratorIterator()” which is another standard PHP class. This enables iteration over the “RecursiveArrayIterator()” with its object passed which further requires the usage of a “iterator_to_array” function.

  • Thực hiện Phương pháp 2: Phần 2

Các mảng $ flattened của người Viking được truyền với chức năng này và một đối số thứ hai được đặt là sai. Điều này là do các khóa lặp không bắt buộc như một chỉ mục, đó là lý do tại sao việc sử dụng hàm VAR_DUMP ở đây cho cùng một đầu ra.“$flattened” array is passed with this function and a second argument is set as FALSE. This is because the iterator keys are not required as an index which is why the usage of the var_dump function here gives the same output.

Có thể có các thành phần khác được thêm vào ở đây giống như một mảng bên trong của người Viking với một số giá trị, cũng như một chuỗi giá trị chuỗi nổi trên cuối cùng. Theo cách này, một mảng phẳng có thể được lấy bằng mã ngắn hơn cho kết quả tương tự như phương pháp đầu tiên.“inner” array with “Some value” as well as a “String value” floating at the end. In this way, a flattened array can be obtained with a shorter code which gives the same result as the first method.

- Việc sử dụng thực hiện Phương pháp 2

. > ['Mật khẩu của bạn phải là sáu ký tự trở lên', 'Mật khẩu của bạn không đủ mạnh'], 'Giá trị chuỗi']; dẹt
$array = [
‘name’ => [
‘Your name is required’,
‘Your name cannot contain any numbers’,
‘inner’ => [
‘Some value’
]
],
‘dob’ => [
‘Your date of birth is required’
],
‘password’ => [
‘Your password must be six characters or more’,
‘Your password is not strong enough’
],
‘String value’
];
$flattened = new RecursiveArrayIterator ($array);
$flattened = new RecursiveIteratorIterator ($flattened);
$flattened = iterator_to_array ($flattened, FALSE);
var_dump ($flattened);
?>

Sự kết luận

Bài viết này làm sáng tỏ cơ chế làm phẳng các mảng đa chiều trong PHP và tập trung vào hai phương pháp cơ bản. Hãy để tóm tắt các điểm chính được đề cập:flattening multidimensional arrays in PHP and focused on two basic methods. Let’s summarize the main points that were covered:

  • Một mảng phẳng là một mảng một chiều được chuyển đổi từ một mảng đa chiều trong PHP. Nó có thể lưu trữ một phần tử duy nhất tại mỗi chỉ mục của nó thay vì một mảng khác sau khi nó được làm phẳng.
  • Một mảng đa chiều có nhiều chiều vì nó có thể lưu trữ các giá trị với nhiều khóa trong đó.
  • Một mảng một chiều có một chiều duy nhất vì nó chỉ có thể giữ nhiều giá trị dưới một tên duy nhất.
  • Phương pháp đầu tiên tạo ra một hàm cơ bản lặp qua mọi giá trị của mảng đa chiều và tìm kiếm một mảng khác tồn tại trong bất kỳ giá trị nào hoặc khóa của chúng.
  • Phương pháp thứ hai dễ dàng hơn để mã hóa vì nó sử dụng các lớp PHP tiêu chuẩn và trình lặp mảng để lặp lại trên các mảng đa chiều.

Bạn có thể thực hành các phương pháp này một cách dễ dàng với bài viết này và chọn một phương pháp yêu thích của bạn để làm phẳng bất kỳ mảng đa chiều nào.flatten any multidimensional array.

  • Tác giả
  • Bài viết gần đây

Vị trí là tất cả: Tài nguyên đi đến của bạn để học & xây dựng: CSS, JavaScript, HTML, PHP, C ++ và MySQL.

Làm thế nào để bạn làm phẳng một mảng trong PHP?

Làm phẳng một mảng hai chiều_merge (... $ TwodimensionArray); Array_merge lấy một danh sách các mảng biến làm đối số và hợp nhất tất cả chúng thành một mảng. Bằng cách sử dụng toán tử splat (...), mọi phần tử của mảng hai chiều đều được truyền dưới dạng đối số cho Array_merge.array_merge(... $twoDimensionalArray); array_merge takes a variable list of arrays as arguments and merges them all into one array. By using the splat operator ( ... ), every element of the two-dimensional array gets passed as an argument to array_merge .

Làm cách nào để làm phẳng một mảng đa chiều trong PHP?

Làm thế nào để bạn làm phẳng một mảng đa chiều ?..
một.Sử dụng Concat () và Ứng dụng () Let FlatArray = [].Concat ..
b.Sử dụng toán tử lây lan.Đặt FlatArray = [].concat (mảng);// Đầu ra: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15].
c.Sử dụng phương pháp giảm.Đặt FlatArray = mảng.Giảm ((acc, curval) => {return acc ..

Bạn có thể làm phẳng một mảng không?

Làm phẳng một mảng là một quá trình giảm kích thước của một mảng.Nói cách khác, đó là một quá trình giảm số lượng kích thước của một mảng xuống số thấp hơn.. In other words, it a process of reducing the number of dimensions of an array to a lower number.

Phương pháp nào được sử dụng để thu gọn mảng đa chiều vào một mảng một chiều?

Nếu bạn có một mảng các mảng - ví dụ, một mảng của một mảng số nguyên - bạn có thể chuyển đổi nó thành một mảng phẳng duy nhất bằng cách sử dụng phương thức đã tham gia ().joined() method.

Chủ đề