如何从数组中获取值列表:
[data] => Array
(
[5] => Array
(
[0] => 19
[1] => 18
[2] => 20
)
[6] => Array
(
[0] => 28
)
)
预期输出结果字符串为:19,18,20,28
谢谢!
使用以下 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.",";
}
}
$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
的调用。 (没有生成临时数组)
我还没有真正花时间考虑任何边缘情况,但这是一种非正统的方法,它将直接提供所需的输出字符串,而不需要循环,甚至生成一个新的临时数组。这是一个整洁的小单行,带有一点正则表达式的魔力。 (正则表达式演示)它有效地删除了所有方括号和大括号以及带有尾随冒号的双引号键。
代码:(演示)
$data=[5=>[19,18,20],6=>[28]];
echo preg_replace('/[{}[\]]+|"\d+":/','',json_encode($data));
输出:
19,18,20,28
说得清楚/诚实,这是一个有点hacky的解决方案,但我认为对于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);
编辑:添加了完整的解决方案..