jjhomeus
jjhomeus

Reputation: 313

Flatten a 2d array by imploding specified column values with spaces in each row, then implode the flattened array with commas

$array = array();
foreach ( $order->get_items() as $item_id => $item ) {  
    $rray = array(
        'name' => $item['name'],
        'qty' => $item['qty']
    );
    $array[] = $rray; 
}

I have the array like the above How to create a string look like this: 'name qty, name qty, name qty, name qty, name qty, name qty, name qty, '

Afghan Kush 1, Pomegranate Blue-Rasp 1, Blueberry Vanilla 1, Banana Strawberry 1, Caramel Cappuccino 1,

Upvotes: 1

Views: 72

Answers (4)

Federkun
Federkun

Reputation: 36944

Try with:

$array_text = implode(
    ', ',
    array_map(
        function ($e) {
            return $e['name'] . ' ' . $e['qty'];
        },
        $array
    )
);

Upvotes: 1

jjhomeus
jjhomeus

Reputation: 313

$array = array();
foreach( $order->get_items() as $item_id => $item ) {   

        $rray = array(
            'name'=>$item['name'],
            'qty'=>$item['qty']
        );
        $array[] = $rray; 

        }       


        foreach($array as $key => $value) {
            $result .= $value['name']." ". $value['qty'];       
            $result .= ", ";    
}
var_dump($result);

Work like a champ!

Upvotes: 0

Austin Brunkhorst
Austin Brunkhorst

Reputation: 21130

You can use array_map() and implode().

$array = [
    [
        'name' => 'Blackberry Kush',
        'qty' => '1'
    ],
    [
        'name' => 'Granddaddy Purple',
        'qty' => '1'
    ],
    [
        'name' => '20% THC',
        'qty' => '1'
    ],
    [
        'name' => 'Pomegranate Blue-Rasp',
        'qty' => '1'
    ],
    [
        'name' => 'Blueberry Vanilla',
        'qty' => '2'
    ],
    [
        'name' => 'Banana Strawberry',
        'qty' => '3'
    ]
];

$formatted = array_map( function($obj) {
    return "{$obj['name']} {$obj['qty']}"; 
}, $array );

echo implode( ', ', $formatted );

Example

Upvotes: 1

OllyBarca
OllyBarca

Reputation: 1531

$mystring = "";    

foreach($array as $strain) {
    $strain['array_text'] = $strain['name']." ".$strain['qty'];
    $mystring .= $strain['array_text'].", ";
}

echo $mystrain;

Upvotes: 1

Related Questions