-5

I have the following response from my PHP code.

Array
(
[customer] => 402
[carat] => Array
    (
        [0] => 6
        [1] => 5
    )

[units] => Array
    (
        [0] => grams
        [1] => dwt
        [2] => dwt
    )

[weight] => Array
    (
        [0] => 5
        [1] => 3
        [2] => 6
    )

[our_payout] => Array
    (
        [0] => 15
        [1] => 9
        [2] => 60
    )

[sale_payout] => Array
    (
        [0] => 18
        [1] => 12
        [2] => 180
    )

[hidden_carat] => Array
    (
        [0] => 6
        [1] => 5
        [2] =>
    )

[hidden_unit] => Array
    (
        [0] => 1
        [1] => 2
        [2] => 2
    )

[carat_scale_price] => Array
    (
        [0] =>
        [1] =>
        [2] =>
    )

[sales_id] => Array
    (
        [0] =>
        [1] =>
        [2] =>
    )

[currency_rate_id] => Array
    (
        [0] =>
        [1] =>
        [2] =>
    )

[gold_price_id] => Array
    (
        [0] =>
        [1] =>
        [2] =>
    )

[taget_percentage] =>
[reference] => 0
[notes] =>
[unit] => 0
[customer_id] => 402
[total_items] => 2
[submit] =>
)

And I want to join for example [0] => grams with [0] => 5 [0] => 16 and so on.

yivi
  • 42,438
  • 18
  • 116
  • 138
Alex Marius
  • 37
  • 3
  • 10
  • 1
    We're not entirely sure what you're asking? Are you trying to do string concats? – Steven Lu Jul 07 '12 at 13:07
  • I reckon you need to prepare the input array structure to be a complete matrix before trying to transpose. Otherwise there is some ambiguity in how the `customer` and `carat` should be distributed in the result array. (I suppose `customer` isn't terribly ambiguous, but as I said, filling the gaps will make transposing cleaner and more reliable.) – mickmackusa Aug 30 '21 at 00:51

1 Answers1

0

I'm with Steve, I'm not really sure what you're asking for. It looks like you want to transpose that matrix but only for some of the keys? Here's something that might do what you're looking for, assuming that your original array above is in the variable $arr:

$lineItems = array();
$i = 0;
$allLineItemsHaveI = true;

while($allLineItemsHaveI) {
   $lineItems[$i] = array();
   foreach($arr as $key => $subArr) {
      if(array_key_exists($i, $subArr)) {
         $lineItems[$i][$key] = $subArr[$i];
      } else {
         $allLineItemsHaveI = false;
      }
   } 

   $i++;
}    

array_pop($lineItems);

This is the output:

Array
(
    [0] => Array
        (
            [carat] => 6
            [units] => grams
            [weight] => 5
            [our_payout] => 15
            [sale_payout] => 18
            [hidden_carat] => 6
        )

    [1] => Array
        (
            [carat] => 5
            [units] => dwt
            [weight] => 3
            [our_payout] => 9
            [sale_payout] => 12
            [hidden_carat] => 5
        )

)

Also, check this out: Transposing multidimensional arrays in PHP

Community
  • 1
  • 1
Dan Finnie
  • 107
  • 3