PHP 数组组合右键的值

我对 PHP 中的数组有疑问:


我有很多 zip 文件,里面有很多数据,使用 preg_grep 我可以得到以下结果:


(这些数据是从 zip 文件中的多个文本文件返回的)


    => Array

            (

                [ZipName] =>  data.zip

                [Age] => 45

            )

    => Array

            (

                [ZipName] =>  data.zip

                [Name] => John

            )

    => Array

            (

                [ZipName] => data2.zip

            )

    => Array

            (

                [ZipName] =>  data1.zip

                [Age] => 25 

            )

     => Array

            (

                [ZipName] =>  data2.zip

                [Age] => 27

            )

     => Array

            (

                [ZipName] =>  data1.zip

                [Name] => Abram

            )

     => Array

            (

                [ZipName] =>  data1.zip

            )

     => Array

            (

                [ZipName] =>  data2.zip

                [City] => London 

            )          

    => Array

            (

                [ZipName] =>  data2.zip

                [Name] => Inna 

            )         

    => Array

            (

                [ZipName] =>  data1.zip

                [City] => London 

            )

那么我如何使用 ZipName Value 组合/合并所有这些数组!


就像在 SQL 中一样简单:


SELECT * FROM * WHERE ZipName= 'x';


0 => Array

        (

            [ZipName] =>  data.zip

            [Age] => 45

            [Name] => John

            [City] => Leicester 

        )


1 => Array

        (

            [ZipName] =>  data1.zip

            [Age] => 25

            [Name] => Abram

            [City] => London 

        )


2 => Array

        (

            [ZipName] =>  data2.zip

            [Age] => 27

            [Name] => Inna

            [City] => London

        )


holdtom
浏览 125回答 3
3回答

牛魔王的故事

array_merge使用 等的替代方法array_combine...只是两个简单的 foreach 循环并将值设置到一个新数组 ( $new_arr) 中。$new_arr = [];foreach($arr as $inner_arr) {    foreach($inner_arr as $key=>$value) {        $new_arr[$key] = $value;    }}更新 我不清楚 OP 想要什么,但我希望现在更清楚了:试试这个:( 基本上将值添加到array[name of ZipName][{current key for the inner array}]$arr = [    [        'ZipName' => 'data.zip',        'Age' => '45'    ],    [        'ZipName' => 'data.zip',        'Name' => 'John'    ],    [        'ZipName' => 'data2.zip',        'Age' => '27'    ],    [        'ZipName' => 'data1.zip',        'Name' => 'Abram'    ],    [        'ZipName' => 'data1.zip'    ],        [        'ZipName' =>  'data2.zip',        'City' => 'London'     ],        [        'ZipName' =>  'data2.zip',        'Name' => 'Inna'     ],        [        'ZipName' =>  'data1.zip',        'City' => 'London'     ]];$new_arr = [];foreach($arr as $key => $inner_arr) {   foreach($inner_arr as $ik => $item) {       $new_arr[$inner_arr['ZipName']][$ik] = $item;   }}输出:Array(    [data.zip] => Array        (            [ZipName] => data.zip            [Age] => 45            [Name] => John        )    [data2.zip] => Array        (            [ZipName] => data2.zip            [Age] => 27            [City] => London            [Name] => Inna        )    [data1.zip] => Array        (            [ZipName] => data1.zip            [Name] => Abram            [City] => London        ))做的时候:$new_arr = array_values($new_arr);关键只是做一个数字索引(如果重要的话)Array(    [0] => Array        (            [ZipName] => data.zip            [Age] => 45            [Name] => John        )    [1] => Array        (            [ZipName] => data2.zip            [Age] => 27            [City] => London            [Name] => Inna        )    [2] => Array        (            [ZipName] => data1.zip            [Name] => Abram            [City] => London        ))

qq_遁去的一_1

您需要的是按索引处的唯一值进行分组['ZipName'],然后分别合并这些组。这可以通过.array_reduce例子:<?phpdeclare(strict_types=1);$input = [    [        'ZipName' => 'data_1.zip',        'Age'     => 45,    ], [        'ZipName' => 'data_1.zip',        'Name'    => 'John',    ], [        'ZipName' => 'data_1.zip',    ], [        'ZipName' => 'data_1.zip',        'City'    => 'Leicester',    ],    [        'ZipName' => 'data_2.zip',        'Age'     => 45,    ], [        'ZipName' => 'data_2.zip',        'Name'    => 'John',    ], [        'ZipName' => 'data_2.zip',    ], [        'ZipName' => 'data_2.zip',        'City'    => 'Leicester',    ],];$output = array_values(array_reduce($input, static function (array $acc, array $item): array {    $acc[$item['ZipName']] = array_merge($acc[$item['ZipName']] ?? [], $item);    return $acc;}, []));print_r($output);

慕桂英3389331

我想你要组合不同的数组,所以请使用数组合并。&nbsp; &nbsp;$array0 = Array&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "ZipName" =>&nbsp; data.zip,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Age" => 45&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );&nbsp; &nbsp;$array1 = Array&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "ZipName" =>&nbsp; data.zip,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "Name" => John&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );&nbsp; &nbsp;$array2 = Array&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "ZipName" =>&nbsp; data.zip&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );&nbsp; &nbsp;$array3 = Array&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "ZipName" =>&nbsp; data.zip,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; "City" => Leicester&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; );&nbsp; print_r(array_merge($array0, $array1, $array2, $array3));输出:Array ( [ZipName] => datazip&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; [Age] => 45&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; [Name] => John&nbsp;&nbsp; &nbsp; &nbsp; &nbsp; [City] => Leicester )
打开App,查看更多内容
随时随地看视频慕课网APP