3

I have below array,

    Array
    (
     [1] => Array
      (
        [0] => Array
            (
                [location] => X33
                [usernumber] => 1
                [order] => XX
                [part_number] => Hi
            )

        [1] => Array
            (
                [location] => X33
                [usernumber] => 1
                [order] => YY
                [part_number] => 68730
            )

      )

I want desired output string to echo as below,

'Hello ur oder - XX, YY, part number-Hi, 68730'

How to achieve this output? I was thinking to run a foreach loop, but I'm not sure how I could convert this to a string.

mickmackusa
  • 43,625
  • 12
  • 83
  • 136
rjcode
  • 1,193
  • 1
  • 25
  • 56
  • 2
    See: http://stackoverflow.com/q/1494953/3933332 and http://stackoverflow.com/q/7490488/3933332 – Rizier123 May 31 '16 at 09:26
  • @Rizier123, got it will get array and then implode it! – rjcode May 31 '16 at 09:27
  • Something like `'Hello, ur order - '.implode(", ", array_column($arr[1], 'order')).', '.part number-'.implode(", ", array_column($arr[1], 'part_number'))."'"` – Murad Hasan May 31 '16 at 09:31
  • It does not look senseful. There is one costomer with 2 different orders, each ordering one item. It might be more applicable in scripts probably based on database to fetch the records without a JOIN clause doing a nested fetch loop. What is the real intention? – Pinke Helga May 31 '16 at 09:44

5 Answers5

4

Run a foreachloop and concat

$orderNumber = '';
$partnumber = '';
foreach ($yourArray as $array) {
    if ($orderNumber !="") {
        $orderNumber.=",";
    }
    $orderNumber.= $array['order'];
    if ($partNumber !="") {
        $partNumber.=",";
    }
    $partNumber.= $array['part_number'];
}
echo "Hello ur order - ".$orderNumber." part number-". $partNumber;
chandresh_cool
  • 11,753
  • 3
  • 30
  • 45
0

Your must help this code:

<?php
    $array = [
        [
            [
                'order'       => 1,
                'part_number' => 1
            ],
            [
                'order'       => 2,
                'part_number' => 2
            ]
        ]
    ];
    $orders = [];
    $partnumber = [];
    foreach($array as $v) {
        foreach($v as $item) {
            $orders[] = $item['order'];
            $partnumber[] = $item['part_number'];
        }
    }
    $str = sprintf("Hello ur oder - %s, part number-%s", implode(', ', $orders), implode(', ', $partnumber));
    echo $str;

Result:

Hello ur oder - 1, 2, part number-1, 2
Maxim Tkach
  • 1,607
  • 12
  • 23
0

@Frayne Konoks Solution is a nice oneliner:

His Solution with quotes fixed :)

echo 'Hello, ur order - '.implode(", ", array_column($var[1], 'order')).', '.'part number-'.implode(", ", array_column($var[1], 'part_number'))."'";

$var is your array.

Working example: http://sandbox.onlinephpfunctions.com/code/c95545bdf9d9216d6c80cc06542517e596a0360a

Xatenev
  • 6,383
  • 3
  • 18
  • 42
0

I changed the array structure a little bit. The code below would be of help:

$arr = array(
    array(
        'location' => 'X33',
        'usernumber' => '1',
        'order' => 'XX',
        'part_number' => 'Hi',
    ),
    array(
        'location' => 'X33',
        'usernumber' => '1',
        'order' => 'YY',
        'part_number' => '68730',
    )
);

$order = '';
$p_no = '';
foreach ($arr as $ar) {
    $order .= $ar['order'] . ',';
    $p_no .= $ar['part_number'] . ',';
}

$order = rtrim($order, ',');
$p_no = rtrim($p_no, ',');
$final_str = 'Hello ur order - ' . $order . ' part number - ' . $p_no;
echo $final_str;
-1

It's as simple as:

foreach($array[1] as $item){
   echo "Hello ur order - " . $item["order"] . ", " $item["location"] . ", part number-" . $item["order"] . ", " . $item["part_number"];
}
Faisal Ashfaq
  • 2,545
  • 4
  • 28
  • 41