亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

PHP 數組組合右鍵的值

PHP 數組組合右鍵的值

PHP
holdtom 2023-06-18 16:29:06
我對 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        )
查看完整描述

3 回答

?
牛魔王的故事

TA貢獻1830條經驗 獲得超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

        )


)


查看完整回答
反對 回復 2023-06-18
?
qq_遁去的一_1

TA貢獻1725條經驗 獲得超8個贊

您需要的是按索引處的唯一值進行分組['ZipName'],然后分別合并這些組。這可以通過.array_reduce

例子:

<?php

declare(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);


查看完整回答
反對 回復 2023-06-18
?
慕桂英3389331

TA貢獻2036條經驗 獲得超8個贊

我想你要組合不同的數組,所以請使用數組合并。


   $array0 = Array

            (

                "ZipName" =>  data.zip,

                "Age" => 45

            );

   $array1 = Array

            (

                "ZipName" =>  data.zip,

                "Name" => John

            );

   $array2 = Array

            (

                "ZipName" =>  data.zip

            );

   $array3 = Array

            (

                "ZipName" =>  data.zip,

                "City" => Leicester 

            );


  print_r(array_merge($array0, $array1, $array2, $array3));


輸出:


Array ( [ZipName] => datazip 

        [Age] => 45 

        [Name] => John 

        [City] => Leicester )


查看完整回答
反對 回復 2023-06-18
  • 3 回答
  • 0 關注
  • 154 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號