2015-06-10 22 views

回答

9

用一条线,没有循环。

echo implode(',', call_user_func_array('array_merge', $data)); 

试试吧here

+0

这不会覆盖具有相同索引的项目吗? – Rudi

+0

不会。它会创建新的索引。 –

+0

@Rudi也增加了现场示例。 –

0

尝试用这个..

foreach($data as $dataArr){ 
    foreach ($subArray as $value) { 
     $res[] = $value; 
    } 
} 
echo implode(',', $res); 
0

使用下面的代码。

$string = ''; 
foreach($yourarray as $k){ 
    foreach($k as $l){ 
    $string. = $l.","; 
    } 
} 
+0

这不是干净的,因为它会在'$ string'上产生不需要的尾随逗号。 (你的回答也缺少一个解释,SO上的所有帖子都应该包含一些支持文本,说明该方法的工作原理和/或为什么它是适合该问题的方法) – mickmackusa

0

只是遍历子阵列。这些值存储到$结果数组,然后用implode

$result = array(); 
foreach ($data as $subArray) { 
    foreach ($subArray as $value) { 
     $result[] = $value; 
    } 
} 
echo implode(',', $result); 
-2

只需使用嵌套的foreach语句

foreach($dataArray as $key => $subDataArray) 
    foreach($subDataArray as $value) 
     echo $value; 
4

使用下面的PHP代码:

$temp = array(); 
foreach($data as $k=>$v){ 
    if(is_array($v)){ 
     foreach($v as $key=>$value){ 
      $temp[] = $value; 
     } 
    } 
} 
echo implode(',',$temp); 
+0

请包括一些解释,说明为什么你设计了解决方案你拥有的方式。你的答案与其他一些答案不同,因为它调用'is_array()';也许你想解释为什么这是一个有用的内容。另外,如果你从不使用它们,我没有看到声明'$ k'和'$ key'的任何一点。 – mickmackusa

0
$data = array(5 => array(19,18,20), 6 => array(28)); 
foreach ($data as $array) { 
    foreach ($array as $array1) { 
     echo $array1.'<br>'; 
    } 
} 

试试这个吧。它会帮助你

+0

这篇文章:1.不提供所需的输出。 2.不提供任何解释(是低价值/仅限代码的答案) – mickmackusa

0

我还没有真正考虑任何条纹的情况下的时间,但是这是一个非正统的方法,将直接提供所需的输出字符串没有循环,甚至产生新的,临时数组。这是一个有点正则表达式魔术的整齐的小单线程。 (Regex Demo),有效去除所有方&大括号和尾随冒号双引号键。

代码:(Demo

$data=[5=>[19,18,20],6=>[28]]; 
echo preg_replace('/[{}[\]]+|"\d+":/','',json_encode($data)); 

输出:

19,18,20,28 

要清楚/实话,这是一个有点哈克解决方案,但我认为这是很好的SO研究者看通常有多种方式来实现任何给定的结果。

0

因为所有你希望定位的数据是“叶节点”,array_walk_recursive()是一个方便的功能调用。

代码:(Demo

$data=[5=>[19,18,20],6=>[28]]; 
array_walk_recursive($data,function($v){static $first; echo $first.$v; $first=',';}); 

输出:

19,18,20,28 

该方法使用static声明,以避免内爆呼叫和在第一次迭代之后只是迭代的echo呼叫与前述逗号。(没有生成临时数组)

相关问题