如何从数组中获取值列表:
[data] => Array
(
[5] => Array
(
[0] => 19
[1] => 18
[2] => 20
)
[6] => Array
(
[0] => 28
)
)
预期输出结果字符串为:19,18,20,28
谢谢!
只有一行,没有循环。
echo implode(',', call_user_func_array('array_merge', $data));
在这里试试。
使用以下php代码:
$temp = array();
foreach($data as $k=>$v){
if(is_array($v)){
foreach($v as $key=>$value){
$temp[] = $value;
}
}
}
echo implode(',',$temp);
使用以下代码。
$string = '';
foreach($yourarray as $k){
foreach($k as $l){
$string. = $l.",";
}
}
只需在子数组上循环。将值存储到$result数组,然后使用内爆
$result = array();
foreach ($data as $subArray) {
foreach ($subArray as $value) {
$result[] = $value;
}
}
echo implode(',', $result);
$data = array(5 => array(19,18,20), 6 => array(28));
foreach ($data as $array) {
foreach ($array as $array1) {
echo $array1.'<br>';
}
}
试试这个。它将帮助您
由于您希望针对的所有数据都是"叶节点",因此array_walk_recursive()
是一个方便调用的函数。
代码:(演示(
$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
的调用。(未生成临时数组(
我并没有真正花时间考虑任何边缘情况,但这是一种非正统的方法,它将直接提供所需的输出字符串,而无需循环,甚至无需生成新的临时数组。这是一个整洁的小单行,带有一点正则表达式的魔力。(Regex Demo(它有效地去除了所有的方块&大括号和带尾随冒号的双引号键。
代码:(演示(
$data=[5=>[19,18,20],6=>[28]];
echo preg_replace('/[{}[']]+|"'d+":/','',json_encode($data));
输出:
19,18,20,28
老实说,这是一个有点棘手的解决方案,但我认为SO研究人员看到,通常有多种方法可以实现任何给定的结果,这是件好事。
试试这个。。
foreach($data as $dataArr){
foreach ($subArray as $value) {
$res[] = $value;
}
}
echo implode(',', $res);
只需使用嵌套的foreach语句
$values = array();
foreach($dataArray as $key => $subDataArray) {
foreach($subDataArray as $value) {
$values[] = $value;
}
}
$valueString = implode(',', $values);
编辑:添加了完整的解决方案。。