Reputation: 2008
I have a 2D array
Array (
[0] => Array (
[item_name] => Item name1
[journal_name] => journal name1
)
[1] => Array (
[item_name] => Item name 2
[journal_name] => journal name2 )
)
I want to implode above array like
Item_name1 # journal_name1 , item_name2 # journal_name2
How to join elements like this ?
Upvotes: 0
Views: 95
Reputation: 839
Check the following, this is without foreach
loop
$input = array(
array(
'item_name' => 'Item name1',
'journal_name' => 'journal name1'
),
array(
'item_name' => 'Item name2',
'journal_name' => 'journal name2'
)
);
echo implode(', ', array_map(function ($entry) {
return $entry['item_name'] . ' # ' . $entry['journal_name'];
}, $input));
Upvotes: 0
Reputation: 1279
$result_array = array();
foreach($your_2d_array as $val){
$result_array = $val[item_name].'#'.$val[journal_name];
}
$imploded_string = implode(',',$result_array);
There is another second method to do it->
echo implode(',',$result = array_map(function($k, $v){
return "$v[0]#$v[1]";
}, array_keys($your_2d_array), array_values($your_2d_array)));
Upvotes: 0
Reputation: 3986
Check this:
<?php
$arr = array (
0 => Array (
'item_name' => 'Item name1',
'journal_name' => 'journal name1'
) ,
1 => Array (
'item_name' => 'Item name 2',
'journal_name' => 'journal name2'
)
);
foreach($arr as $key=>$val) {
$implodeArr[$key] = implode('#', $val);
}
$implodeStr = implode(',', $implodeArr);
?>
Upvotes: 0
Reputation: 1126
One solution would be like this:
$array = array(
array('item_name' => 'Item name1', 'journal_name' => 'journal_name1'),
array('item_name' => 'Item name2', 'journal_name' => 'journal_name2'),
array('item_name' => 'Item name3', 'journal_name' => 'journal_name3'),
);
$implodedString = implode(', ', array_map(function($array) {
return implode(' # ', $array);
}, $array));
echo $implodedString;
Upvotes: 2