【问题标题】:How to add a key value pair to a multidimensional array in php [duplicate]如何在php中将键值对添加到多维数组[重复]
【发布时间】:2020-06-10 14:15:18
【问题描述】:

我有 2 个单数组,我想将它们添加到多维数组中,但一次只能添加一个。这意味着首先添加数组 1,然后添加数组 2,但它们都不能存在于关联数组内的同一个数组中。让我给你看看。

$array1 = ['installer1' => 'Aaron Cash']
$array2 = ['installer2' => 'Wayne Taylor']

$AssociativeArray =   array (
    'JobNumber' => '2',
    'JobType' => '3',
    'Node' => '10',
    'fname' => 'RICARDO',
    'lname' => 'SMITH',
    'RAddress' => 'SUGARAPPLE ST',
    'HomePhone' => '3924651',
    'WorkPhone' => '3276200',
    'RTime' => '10-12',
    'Comment' => 'FROM POLICE STATION, EAST INTO PINEWOOD..3RD LFT ONTO SUGARAPPLE ST;  5TH HSE ON RGT; BEIGE/YELLW #19',
    'FTax' => '1.00',
    'Tag' => '010106',
    'QuotaGroup' => '1.00',
    'Cust_Acct' => '10221401',
    'offernum' => '2136370',

  ),
  122 =>
  array (
    'JobNumber' => '30',
    'JobType' => '3',
    'Node' => '213',
    'fname' => 'MONIQUE',
    'lname' => 'SAWYER NAIRN',
    'RAddress' => 'SUTTON ST',
    'HomePhone' => '8017750',
    'WorkPhone' => '2250417',
    'RTime' => '10-12',
    'Comment' => 'TRN ONTO KEMP RD FRM SHIRLEY ST,   1ST LFT BY LODGE BLDG, 2ND RT,     UNPAINTED HSE AT DEAD END. #13     ...SDW',
    'FTax' => '1.00',
    'Tag' => '213308',
    'QuotaGroup' => '1.00',
    'Cust_Acct' => '11390602',
    'offernum' => '2137494',

  ),
  176 =>
  array (
    'JobNumber' => '22',
    'JobType' => '1',
    'Node' => '128',
    'fname' => 'OSMANY',
    'lname' => 'GODEICH',
    'RAddress' => 'HUDSON STREET',
    'HomePhone' => '8148003',
    'WorkPhone' => '',
    'RTime' => '10-12',
    'Comment' => 'VILLAGE RD ONTO ST ANDREWS DR      LFT @ TJUN, 3RD RGT TO 4 WAY JUNT  BLDG ON LFT WHIT/GRN 4PLEX         UNIT#2. lim',
    'FTax' => '1.00',
    'Tag' => '128101',
    'QuotaGroup' => '1.00',
    'Cust_Acct' => '10036246',
    'offernum' => '2137124',
  ),
  235 =>
  array (
    'JobNumber' => '5',
    'JobType' => '3',
    'Node' => '27',
    'fname' => 'ROSALIE',
    'lname' => 'BAIN',
    'RAddress' => 'NASSAU VILLAGE',
    'HomePhone' => '4233021',
    'WorkPhone' => '',
    'RTime' => '10-12',
    'Comment' => 'FRM SOLDIER RD TO NASSAU VILLAGE;MKRGT AT T-JUNC;7TH LFT OPP BUDGET,  2ND BUILDING ON THE RIGHT (S&M)    BEIGE/GREEN APT #1 4233021         call b4 arrive',
    'FTax' => '1.00',
    'Tag' => '027401',
    'QuotaGroup' => '1.00',
    'Cust_Acct' => '12621206',
    'offernum' => '2136937',
  ),
)%

所以基本上我希望我的输出看起来像这样:

array (
    'JobNumber' => '2',
    'JobType' => '3',
    'Node' => '10',
    'fname' => 'RICARDO',
    'lname' => 'SMITH',
    'RAddress' => 'SUGARAPPLE ST',
    'HomePhone' => '3924651',
    'WorkPhone' => '3276200',
    'RTime' => '10-12',
    'Comment' => 'FROM POLICE STATION, EAST INTO PINEWOOD..3RD LFT ONTO SUGARAPPLE ST;  5TH HSE ON RGT; BEIGE/YELLW #19',
    'FTax' => '1.00',
    'Tag' => '010106',
    'QuotaGroup' => '1.00',
    'Cust_Acct' => '10221401',
    'offernum' => '2136370',
    'installer1' => 'Aaron Cash',
  ),
  122 =>
  array (
    'JobNumber' => '30',
    'JobType' => '3',
    'Node' => '213',
    'fname' => 'MONIQUE',
    'lname' => 'SAWYER NAIRN',
    'RAddress' => 'SUTTON ST',
    'HomePhone' => '8017750',
    'WorkPhone' => '2250417',
    'RTime' => '10-12',
    'Comment' => 'TRN ONTO KEMP RD FRM SHIRLEY ST,   1ST LFT BY LODGE BLDG, 2ND RT,     UNPAINTED HSE AT DEAD END. #13     ...SDW',
    'FTax' => '1.00',
    'Tag' => '213308',
    'QuotaGroup' => '1.00',
    'Cust_Acct' => '11390602',
    'offernum' => '2137494',
    'installer2' => 'Wayne Taylor',
  ),
  176 =>
  array (
    'JobNumber' => '22',
    'JobType' => '1',
    'Node' => '128',
    'fname' => 'OSMANY',
    'lname' => 'GODEICH',
    'RAddress' => 'HUDSON STREET',
    'HomePhone' => '8148003',
    'WorkPhone' => '',
    'RTime' => '10-12',
    'Comment' => 'VILLAGE RD ONTO ST ANDREWS DR      LFT @ TJUN, 3RD RGT TO 4 WAY JUNT  BLDG ON LFT WHIT/GRN 4PLEX         UNIT#2. lim',
    'FTax' => '1.00',
    'Tag' => '128101',
    'QuotaGroup' => '1.00',
    'Cust_Acct' => '10036246',
    'offernum' => '2137124',
    'installer1' => 'Aaron Cash',
  ),
  235 =>
  array (
    'JobNumber' => '5',
    'JobType' => '3',
    'Node' => '27',
    'fname' => 'ROSALIE',
    'lname' => 'BAIN',
    'RAddress' => 'NASSAU VILLAGE',
    'HomePhone' => '4233021',
    'WorkPhone' => '',
    'RTime' => '10-12',
    'Comment' => 'FRM SOLDIER RD TO NASSAU VILLAGE;MKRGT AT T-JUNC;7TH LFT OPP BUDGET,  2ND BUILDING ON THE RIGHT (S&M)    BEIGE/GREEN APT #1 4233021         call b4 arrive',
    'FTax' => '1.00',
    'Tag' => '027401',
    'QuotaGroup' => '1.00',
    'Cust_Acct' => '12621206',
    'offernum' => '2136937',
    'installer2' => 'Wayne Taylor',
  ),
)%

有没有办法做到这一点?我基本上是想给技术人员分配一份工作,但我需要想办法给技术人员分配同等数量的工作。

非常感谢!

【问题讨论】:

  • 你想将$array1 = ['installer1' => 'Aaron Cash'] 中的所有元素添加到$AssociativeArray 的第一个元素,并以类似的方式对下一个第二个数组到关联数组的下一个元素运行循环?
  • 是的,这是正确的。

标签: php arrays laravel sorting


【解决方案1】:

所以我尝试为您解决这个问题,这非常简单,您只需遍历关联数组,然后交替添加其他数组中的元素。

here 是代码的工作示例。

<?php

$array1 = ['installer1' => 'Aaron Cash'];
$array2 = ['installer2' => 'Wayne Taylor'];

$AssociativeArray =   [
    array (
        'JobNumber' => '2',
        'JobType' => '3',
        'Node' => '10',
        'fname' => 'RICARDO',
        'lname' => 'SMITH',
        'RAddress' => 'SUGARAPPLE ST',
        'HomePhone' => '3924651',
        'WorkPhone' => '3276200',
        'RTime' => '10-12',
        'Comment' => 'FROM POLICE STATION, EAST INTO PINEWOOD..3RD LFT ONTO SUGARAPPLE ST;  5TH HSE ON RGT; BEIGE/YELLW #19',
        'FTax' => '1.00',
        'Tag' => '010106',
        'QuotaGroup' => '1.00',
        'Cust_Acct' => '10221401',
        'offernum' => '2136370',
    ),
    array (
        'JobNumber' => '30',
        'JobType' => '3',
        'Node' => '213',
        'fname' => 'MONIQUE',
        'lname' => 'SAWYER NAIRN',
        'RAddress' => 'SUTTON ST',
        'HomePhone' => '8017750',
        'WorkPhone' => '2250417',
        'RTime' => '10-12',
        'Comment' => 'TRN ONTO KEMP RD FRM SHIRLEY ST,   1ST LFT BY LODGE BLDG, 2ND RT,     UNPAINTED HSE AT DEAD END. #13     ...SDW',
        'FTax' => '1.00',
        'Tag' => '213308',
        'QuotaGroup' => '1.00',
        'Cust_Acct' => '11390602',
        'offernum' => '2137494',
        'installer2' => 'Wayne Taylor',
    ),
    array (
        'JobNumber' => '22',
        'JobType' => '1',
        'Node' => '128',
        'fname' => 'OSMANY',
        'lname' => 'GODEICH',
        'RAddress' => 'HUDSON STREET',
        'HomePhone' => '8148003',
        'WorkPhone' => '',
        'RTime' => '10-12',
        'Comment' => 'VILLAGE RD ONTO ST ANDREWS DR      LFT @ TJUN, 3RD RGT TO 4 WAY JUNT  BLDG ON LFT WHIT/GRN 4PLEX         UNIT#2. lim',
        'FTax' => '1.00',
        'Tag' => '128101',
        'QuotaGroup' => '1.00',
        'Cust_Acct' => '10036246',
        'offernum' => '2137124',
        'installer1' => 'Aaron Cash',
    ),
    array (
        'JobNumber' => '5',
        'JobType' => '3',
        'Node' => '27',
        'fname' => 'ROSALIE',
        'lname' => 'BAIN',
        'RAddress' => 'NASSAU VILLAGE',
        'HomePhone' => '4233021',
        'WorkPhone' => '',
        'RTime' => '10-12',
        'Comment' => 'FRM SOLDIER RD TO NASSAU VILLAGE;MKRGT AT T-JUNC;7TH LFT OPP BUDGET,  2ND BUILDING ON THE RIGHT (S&M)    BEIGE/GREEN APT #1 4233021         call b4 arrive',
        'FTax' => '1.00',
        'Tag' => '027401',
        'QuotaGroup' => '1.00',
        'Cust_Acct' => '12621206',
        'offernum' => '2136937',
        'installer2' => 'Wayne Taylor',
    ),
];

$i=0;
foreach($AssociativeArray as $key => $arr){
    if($i % 2 == 0){
        foreach($array1 as $key1 => $val1){
            $AssociativeArray[$key][$key1] = $val1;
        }
    }else{
        foreach($array2 as $key2 => $val2){
            $AssociativeArray[$key][$key2] = $val2;
        }
    }
    $i++;
}

print_r($AssociativeArray);

要将第三个数组添加到上述解决方案中,您需要修改代码如下。

$array1 = ['installer1' => 'Aaron Cash'];
$array2 = ['installer2' => 'Wayne Taylor'];
$array3 = ['installer3' => 'Omar Abbas'];

$tempArr = [$array1,$array2,$array3];

$i=-1;
foreach($AssociativeArray as $key => $arr){
    $i = ($i < 2 ? $i+1 : 0);
    foreach($tempArr[$i] as $key1 => $val1){
        $AssociativeArray[$key][$key1] = $val1;
    }
}

【讨论】:

  • 如果我想在混合中添加第三个数组,它如何添加呢?基本上使用 3 个安装程序而不是 2 个
  • @KeithRoye 请查看更新后的答案。
【解决方案2】:

代码更新 修正多维数组的第一行

$AssociativeArray =   array (
    array(

最后一行使用 array_push 函数在 AssociativeArray 中添加两个数组

$array1 = ['installer1' => 'Aaron Cash'];
$array2 = ['installer2' => 'Wayne Taylor'];

$AssociativeArray =   array (
array(
    'JobNumber' => '2',
    'JobType' => '3',
    'Node' => '10',
    'fname' => 'RICARDO',
    'lname' => 'SMITH',
    'RAddress' => 'SUGARAPPLE ST',
    'HomePhone' => '3924651',
    'WorkPhone' => '3276200',
    'RTime' => '10-12',
    'Comment' => 'FROM POLICE STATION, EAST INTO PINEWOOD..3RD LFT ONTO SUGARAPPLE ST;  5TH HSE ON RGT; BEIGE/YELLW #19',
    'FTax' => '1.00',
    'Tag' => '010106',
    'QuotaGroup' => '1.00',
    'Cust_Acct' => '10221401',
    'offernum' => '2136370',

  ),
  122 =>
  array (
    'JobNumber' => '30',
    'JobType' => '3',
    'Node' => '213',
    'fname' => 'MONIQUE',
    'lname' => 'SAWYER NAIRN',
    'RAddress' => 'SUTTON ST',
    'HomePhone' => '8017750',
    'WorkPhone' => '2250417',
    'RTime' => '10-12',
    'Comment' => 'TRN ONTO KEMP RD FRM SHIRLEY ST,   1ST LFT BY LODGE BLDG, 2ND RT,     UNPAINTED HSE AT DEAD END. #13     ...SDW',
    'FTax' => '1.00',
    'Tag' => '213308',
    'QuotaGroup' => '1.00',
    'Cust_Acct' => '11390602',
    'offernum' => '2137494',

  ),
  176 =>
  array (
    'JobNumber' => '22',
    'JobType' => '1',
    'Node' => '128',
    'fname' => 'OSMANY',
    'lname' => 'GODEICH',
    'RAddress' => 'HUDSON STREET',
    'HomePhone' => '8148003',
    'WorkPhone' => '',
    'RTime' => '10-12',
    'Comment' => 'VILLAGE RD ONTO ST ANDREWS DR      LFT @ TJUN, 3RD RGT TO 4 WAY JUNT  BLDG ON LFT WHIT/GRN 4PLEX         UNIT#2. lim',
    'FTax' => '1.00',
    'Tag' => '128101',
    'QuotaGroup' => '1.00',
    'Cust_Acct' => '10036246',
    'offernum' => '2137124',
  ),
  235 =>
  array (
    'JobNumber' => '5',
    'JobType' => '3',
    'Node' => '27',
    'fname' => 'ROSALIE',
    'lname' => 'BAIN',
    'RAddress' => 'NASSAU VILLAGE',
    'HomePhone' => '4233021',
    'WorkPhone' => '',
    'RTime' => '10-12',
    'Comment' => 'FRM SOLDIER RD TO NASSAU VILLAGE;MKRGT AT T-JUNC;7TH LFT OPP BUDGET,  2ND BUILDING ON THE RIGHT (S&M)    BEIGE/GREEN APT #1 4233021         call b4 arrive',
    'FTax' => '1.00',
    'Tag' => '027401',
    'QuotaGroup' => '1.00',
    'Cust_Acct' => '12621206',
    'offernum' => '2136937',
  ),
);
array_push($AssociativeArray, $array1,$array2);

【讨论】:

    【解决方案3】:

    你可以试试这样的:

    <?php
    
    $array1 = ['installer1' => 'Aaron Cash'];
    $array2 = ['installer2' => 'Wayne Taylor'];
    
    $AssociativeArray = array(
        array(
            'JobNumber' => '2',
            'JobType' => '3',
            'Node' => '10',
            'fname' => 'RICARDO',
            'lname' => 'SMITH',
            'RAddress' => 'SUGARAPPLE ST',
            'HomePhone' => '3924651',
            'WorkPhone' => '3276200',
            'RTime' => '10-12',
            'Comment' => 'FROM POLICE STATION, EAST INTO PINEWOOD..3RD LFT ONTO SUGARAPPLE ST;  5TH HSE ON RGT; BEIGE/YELLW #19',
            'FTax' => '1.00',
            'Tag' => '010106',
            'QuotaGroup' => '1.00',
            'Cust_Acct' => '10221401',
            'offernum' => '2136370',
    
        ),
        122 =>
        array(
            'JobNumber' => '30',
            'JobType' => '3',
            'Node' => '213',
            'fname' => 'MONIQUE',
            'lname' => 'SAWYER NAIRN',
            'RAddress' => 'SUTTON ST',
            'HomePhone' => '8017750',
            'WorkPhone' => '2250417',
            'RTime' => '10-12',
            'Comment' => 'TRN ONTO KEMP RD FRM SHIRLEY ST,   1ST LFT BY LODGE BLDG, 2ND RT,     UNPAINTED HSE AT DEAD END. #13     ...SDW',
            'FTax' => '1.00',
            'Tag' => '213308',
            'QuotaGroup' => '1.00',
            'Cust_Acct' => '11390602',
            'offernum' => '2137494',
    
        ),
        176 =>
        array(
            'JobNumber' => '22',
            'JobType' => '1',
            'Node' => '128',
            'fname' => 'OSMANY',
            'lname' => 'GODEICH',
            'RAddress' => 'HUDSON STREET',
            'HomePhone' => '8148003',
            'WorkPhone' => '',
            'RTime' => '10-12',
            'Comment' => 'VILLAGE RD ONTO ST ANDREWS DR      LFT @ TJUN, 3RD RGT TO 4 WAY JUNT  BLDG ON LFT WHIT/GRN 4PLEX         UNIT#2. lim',
            'FTax' => '1.00',
            'Tag' => '128101',
            'QuotaGroup' => '1.00',
            'Cust_Acct' => '10036246',
            'offernum' => '2137124',
        ),
        235 =>
        array(
            'JobNumber' => '5',
            'JobType' => '3',
            'Node' => '27',
            'fname' => 'ROSALIE',
            'lname' => 'BAIN',
            'RAddress' => 'NASSAU VILLAGE',
            'HomePhone' => '4233021',
            'WorkPhone' => '',
            'RTime' => '10-12',
            'Comment' => 'FRM SOLDIER RD TO NASSAU VILLAGE;MKRGT AT T-JUNC;7TH LFT OPP BUDGET,  2ND BUILDING ON THE RIGHT (S&M)    BEIGE/GREEN APT #1 4233021         call b4 arrive',
            'FTax' => '1.00',
            'Tag' => '027401',
            'QuotaGroup' => '1.00',
            'Cust_Acct' => '12621206',
            'offernum' => '2136937',
        )
    );
    
    // Generate the final array
    $result = [];
    $installerIndex = 0;
    
    foreach ($AssociativeArray as $key => $value) {
        $installerIndex++; //Increase the operator index
        $operatorArray = ($installerIndex % 2) ? $array1 : $array2;  // Select the operator array using the current index
        $result[$key] = $value + $operatorArray; // Merge the value with the selected operator info
    }
    
    }
    
    

    但我会将两个安装程序放在一个关联数组中,如下所示:

    $installerArray = [
        ['installer1' => 'Aaron Cash'],
        ['installer2' => 'Wayne Taylor']
    ];
    
    

    这样您可以更轻松地访问它们,并且循环如下所示:

    foreach ($AssociativeArray as $key => $value) {
        $operatorIndex++; //Increase the operator index
        $result[$key] = $value + $installerArray[$operatorIndex%2]; // Merge the value with the selected operator info
    }
    
    

    【讨论】:

      猜你喜欢
      • 2018-07-10
      • 2019-05-30
      • 2019-10-04
      • 2013-06-22
      • 1970-01-01
      • 2023-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多