Home Backend Development PHP Problem How to convert multidimensional array to one dimensional array in PHP

How to convert multidimensional array to one dimensional array in PHP

Apr 19, 2023 am 10:06 AM

In PHP programming, we often use arrays, and multidimensional arrays are also a very common data type. Especially when dealing with complex, structured data, using multidimensional arrays can organize the data more clearly. However, in some cases, we need to convert a multi-dimensional array into a one-dimensional array, which is very convenient. This article will introduce how to convert a multi-dimensional array into a one-dimensional array in PHP.

1. What is a multidimensional array?

In PHP, arrays can have multiple dimensions. A one-dimensional array is equivalent to a list, in which each element has a subscript, and the corresponding value can be obtained through the subscript. Multidimensional arrays use an array to express a structure similar to a table or matrix, in which each element can be an array or another multidimensional array.

For example, the following two-dimensional array represents a student information table:

$students = array(
    array("name" => "张三", "age" => 18, "score" => array(90, 85, 94)),
    array("name" => "李四", "age" => 22, "score" => array(80, 88, 90)),
    array("name" => "王五", "age" => 20, "score" => array(92, 95, 90))
);
Copy after login

There are three elements in this array, each element is a one-dimensional array containing three key-value pairs Array with keys "name", "age", and "score". The value corresponding to "score" is a one-dimensional array containing three elements, representing the scores of the three exams.

2. Why do we need to convert multi-dimensional arrays into one-dimensional arrays?

Although multi-dimensional arrays are convenient when expressing complex data, in some cases they need to be converted into one-dimensional arrays, which can make it easier to operate and process the data.

For example, if you need to output the above student information table into a simple table, then you need to expand each student's information into one row:

| 姓名 | 年龄 | 成绩1 | 成绩2 | 成绩3 |
| 张三 | 18   | 90    | 85    | 94    |
| 李四 | 22   | 80    | 88    | 90    |
| 王五 | 20   | 92    | 95    | 90    |
Copy after login

At this time, you need to convert the multi-dimensional array Expand into a one-dimensional array, each row corresponds to a one-dimensional array.

3. How to convert a multi-dimensional array into a one-dimensional array?

In PHP, it is not difficult to convert a multi-dimensional array into a one-bit array. It can be achieved through recursive functions.

Here is a sample code that can flatten an array of arbitrary dimensions into a one-dimensional array:

function flatten($arr){
    $result = array();
    foreach($arr as $value){
        if(is_array($value)){
            $result = array_merge($result, flatten($value));
        }else{
            $result[] = $value;
        }
    }
    return $result;
}
Copy after login

What this function does is simple: if the element is an array, it calls itself recursively , otherwise the element is added to the resulting array. You can convert a multi-dimensional array into a one-dimensional array by calling this function, for example:

$students = array(
    array("name" => "张三", "age" => 18, "score" => array(90, 85, 94)),
    array("name" => "李四", "age" => 22, "score" => array(80, 88, 90)),
    array("name" => "王五", "age" => 20, "score" => array(92, 95, 90))
);

$result = flatten($students);

print_r($result);
Copy after login

The output result is:

Array
(
    [0] => 张三
    [1] => 18
    [2] => 90
    [3] => 85
    [4] => 94
    [5] => 李四
    [6] => 22
    [7] => 80
    [8] => 88
    [9] => 90
    [10] => 王五
    [11] => 20
    [12] => 92
    [13] => 95
    [14] => 90
)
Copy after login

As you can see, the original two-dimensional array has been flattened into a A one-dimensional array of 15 elements.

4. Problems encountered and solutions

When converting multi-dimensional arrays, you may encounter some problems. Below are some possible problems and corresponding solutions.

  1. How to deal with array keys?

In the previous example, we just expanded the values ​​in the array into a one-dimensional array, ignoring the array keys. If you need to preserve the keys, you can use the following code:

function flatten2($arr){
    $result = array();
    foreach($arr as $key => $value){
        if(is_array($value)){
            $result = array_merge($result, flatten2($value));
        }else{
            $result[$key] = $value;
        }
    }
    return $result;
}
Copy after login

The only difference between this function and the previous function is that when the element is not an array, both the value and the key are added to the resulting array.

  1. How to deal with multi-dimensional associative arrays?

When each element in a multidimensional array is an associative array, it can be expanded into a one-dimensional array, in which each element is an associative array. For example, to expand this array:

$students = array(
    array(
        "name" => "张三",
        "age" => 18,
        "score" => array("语文" => 90, "数学" => 85, "英语" => 94)
    ),
    array(
        "name" => "李四",
        "age" => 22,
        "score" => array("语文" => 80, "数学" => 88, "英语" => 90)
    ),
    array(
        "name" => "王五",
        "age" => 20,
        "score" => array("语文" => 92, "数学" => 95, "英语" => 90)
    )
);
Copy after login

into a one-dimensional array containing 15 elements, you can use the following code:

function flatten3($arr){
    $result = array();
    foreach($arr as $key => $value){
        if(is_array($value)){
            if(!empty($value)){
                foreach($value as $sub_key => $sub_value){
                    $result[$key . "_" . $sub_key] = $sub_value;
                }
            }else{
                $result[$key] = "";
            }
        }else{
            $result[$key] = $value;
        }
    }
    return $result;
}
Copy after login

The logic of this function is similar to the previous function, the only difference When the element is an associative array, the key and value are concatenated and stored as a new key in the result array.

  1. How to deal with arrays containing null and empty arrays?

In the above example, if the original array contains null or empty arrays, they will be ignored after flattening because they are not elements in the array that need to be processed. If you want to retain these elements, you can directly add a judgment to the if statement:

function flatten4($arr){
    $result = array();
    foreach($arr as $key => $value){
        if(is_array($value)){
            if(!empty($value)){
                foreach($value as $sub_key => $sub_value){
                    $result[$key . "_" . $sub_key] = $sub_value;
                }
            }else{
                $result[$key] = array();
            }
        }else{
            $result[$key] = $value;
            if(is_null($value)){
                $result[$key] = null;
            }
        }
    }
    return $result;
}
Copy after login

The only difference between this function and the previous function is that when the element is null or an empty array, the corresponding key value is directly added to the result array.

5. Summary

Converting multi-dimensional arrays into one-dimensional arrays is very common in PHP programming. It allows us to process and operate data more conveniently. With recursive functions, we can easily flatten an array of arbitrary dimensions into a one-dimensional array. In practice, due to the different structures of multi-dimensional arrays, some edge cases may be encountered that require special handling. But in general, this process is not difficult, you just need to be familiar with the use of recursive functions.

The above is the detailed content of How to convert multidimensional array to one dimensional array in PHP. For more information, please follow other related articles on the PHP Chinese website!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

AI Hentai Generator

AI Hentai Generator

Generate AI Hentai for free.

Hot Article

R.E.P.O. Energy Crystals Explained and What They Do (Yellow Crystal)
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Best Graphic Settings
1 months ago By 尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Have Crossplay?
1 months ago By 尊渡假赌尊渡假赌尊渡假赌

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

PHP 8 JIT (Just-In-Time) Compilation: How it improves performance. PHP 8 JIT (Just-In-Time) Compilation: How it improves performance. Mar 25, 2025 am 10:37 AM

PHP 8's JIT compilation enhances performance by compiling frequently executed code into machine code, benefiting applications with heavy computations and reducing execution times.

OWASP Top 10 PHP: Describe and mitigate common vulnerabilities. OWASP Top 10 PHP: Describe and mitigate common vulnerabilities. Mar 26, 2025 pm 04:13 PM

The article discusses OWASP Top 10 vulnerabilities in PHP and mitigation strategies. Key issues include injection, broken authentication, and XSS, with recommended tools for monitoring and securing PHP applications.

PHP Secure File Uploads: Preventing file-related vulnerabilities. PHP Secure File Uploads: Preventing file-related vulnerabilities. Mar 26, 2025 pm 04:18 PM

The article discusses securing PHP file uploads to prevent vulnerabilities like code injection. It focuses on file type validation, secure storage, and error handling to enhance application security.

PHP Encryption: Symmetric vs. asymmetric encryption. PHP Encryption: Symmetric vs. asymmetric encryption. Mar 25, 2025 pm 03:12 PM

The article discusses symmetric and asymmetric encryption in PHP, comparing their suitability, performance, and security differences. Symmetric encryption is faster and suited for bulk data, while asymmetric is used for secure key exchange.

PHP Authentication & Authorization: Secure implementation. PHP Authentication & Authorization: Secure implementation. Mar 25, 2025 pm 03:06 PM

The article discusses implementing robust authentication and authorization in PHP to prevent unauthorized access, detailing best practices and recommending security-enhancing tools.

PHP CSRF Protection: How to prevent CSRF attacks. PHP CSRF Protection: How to prevent CSRF attacks. Mar 25, 2025 pm 03:05 PM

The article discusses strategies to prevent CSRF attacks in PHP, including using CSRF tokens, Same-Site cookies, and proper session management.

How do you retrieve data from a database using PHP? How do you retrieve data from a database using PHP? Mar 20, 2025 pm 04:57 PM

Article discusses retrieving data from databases using PHP, covering steps, security measures, optimization techniques, and common errors with solutions.Character count: 159

PHP API Rate Limiting: Implementation strategies. PHP API Rate Limiting: Implementation strategies. Mar 26, 2025 pm 04:16 PM

The article discusses strategies for implementing API rate limiting in PHP, including algorithms like Token Bucket and Leaky Bucket, and using libraries like symfony/rate-limiter. It also covers monitoring, dynamically adjusting rate limits, and hand

See all articles