0

I have 2 single arrays that I want to be added in a multidimensional array but only one at a time. Meaning that array 1 gets added first then array 2 gets added second but they both can't exist in the same array inside the associative array. Let me show you.

$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',
  ),
)%

So essentially I will want my output to look like this:

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',
  ),
)%

Is there anyway to do this? I am basically trying to assign technicians to a job but I need to figure out a way to assign techs an equal amount of jobs.

Thanks alot in advance!

Keith Roye
  • 15
  • 7
  • do you want to all the elements in `$array1 = ['installer1' => 'Aaron Cash']` will be added to the first element of `$AssociativeArray` and run the loop in a similar way for the next second array to next element of the associative array ? – Omar Abbas Feb 26 '20 at 16:41
  • yes this is correct. – Keith Roye Feb 26 '20 at 16:46

3 Answers3

0

So I tried to solve this for you it's very simple you just needed to loop through the associative array and then add the elements from the other arrays alternatively.

here is the working example of the code.

<?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);

To add a third array into the above solution you need to modify the code as following.

$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;
    }
}
Omar Abbas
  • 1,546
  • 3
  • 9
  • 15
0

You can try something like this:

<?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
}

}

But I would put the two installer together in an associative array, something like this:

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

This way you could access them more easily, and the loop would look like this:

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

kb05
  • 69
  • 4
0

Update for code correction on first line for multidimensional array

$AssociativeArray =   array (
    array(

and in last line use of array_push function to add both arrays in 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);