我想知道如何:
这是一个数组示例:
Array
(
[name] => Array
(
[0] => Some message to display1
)
[test] => Array
(
[0] => Some message to display2
)
[kudos] => Array
(
[0] => Some message to display3
)
)
我想这样显示:
逗号列表: Some message to display1, Some message to display2, Some message to display3
答案 0 :(得分:2)
在获得每个数组后循环遍历数组和implode()
。
$bigArray = array();
foreach($firstArray as $secondArray){
if(is_array($secondArray)){
$bigArray = array_merge($bigArray, $secondArray);
}
}
$commaList = implode(",", $bigArray);
答案 1 :(得分:1)
所以,修改我的答案以实际解决你的问题,你可以使用嵌套的foreach循环来做到这一点:
<?php
$a1 = array(
'name' => array( 0 => 'Some message to display1'),
'test' => array( 0 => 'Some message to display2'),
'kudos' => array( 0 => 'Some message to display3'),
);
$final = "";
foreach($a1 as $innerarray){
foreach($innerarray as $message){
$final .= $message.", ";
}
}
echo substr($final,0,-2);
?>
答案 2 :(得分:1)
您可以使用implode
来加入值,array_map
来提取它们:
// this should be your array
$youArray = array();
// return first elements
$values = array_map(function($item) { return $item[0]; }, $youArray);
// echo joined values
echo implode(',', $values);
答案 3 :(得分:0)
$array = array("some text","other text");
$impl = implode(",", $array);
echo $impl;
答案 4 :(得分:0)
implode
适用于一维数组,但是你有一个二维数组,这需要更多的工作。
您可以使用array_map
展平数组
$flatArray = array_map(function($a){
// I implode here just in case the arrays
// have more than one element, if it's just one
// you can return '$a[0];' instead
return implode(',', $a);
}, $array);
echo implode(',', $flatArray);
答案 5 :(得分:0)
这适用于您的数组,应该适用于 n 级别深的数组:
$array = array(
'name' => array('Some message to display1'),
'test' => array('Some message to display2'),
'kudos' => array('Some message to display3')
);
$mystr = multi_join($array);
while (substr($mystr, -1) == ',') {
$mystr = substr($mystr, 0, -1);
}
echo $mystr;
function multi_join($value) {
$string = '';
if (is_array($value)) {
foreach ($value as $el) {
$string.= multi_join($el);
}
} else {
$string.= $value.',';
}
return $string;
}
答案 6 :(得分:0)
这里有一些其他技术可以添加到该堆中...
重新索引第一级,因为splat运算符不喜欢关联键,然后合并解压缩的子数组并内爆。
使用array_reduce()
迭代第一级并从每个子数组中提取第一个元素,根据需要进行定界,而无需使用implode()
。
代码:(Demo)
$array = [
'name' => ['Some message to display1'],
'test' => ['Some message to display2'],
'kudos' => ['Some message to display3']
];
echo implode(', ', array_merge(...array_values($array)));
echo "\n---\n";
echo array_reduce($array, function($carry, $item) {return $carry .= ($carry ? ', ' : '') . $item[0]; }, '');
输出:
Some message to display1, Some message to display2, Some message to display3
---
Some message to display1, Some message to display2, Some message to display3
第一种技术将在子阵列中容纳多个元素,第二种技术不会在每个子阵列中确认多个“消息”。