如何将多维数组中的列转换为逗号分隔的字符串?

时间:2012-05-01 06:03:13

标签: php csv multidimensional-array implode

是否有可能爆炸这样的数组。

$arr=array();
$arr[0]['id']='123';
$arr[0]['otherdatas']=
$arr[1]['id']='234';
$arr[1]['otherdatas']=
$arr[2]['id']='567';
echo "string: ".explode($arr[]['id'],',');

并以此结束?

string: 123,234,567

执行以上结果:

  

致命错误:无法使用[]在第8行的/data/www/test.php中阅读

如果不做像......这样的事情我怎么能这样做呢?

function getIDs(){
    foreach($arr as $val){
        if($string){$string.=',';}
        $string.=$arr['id'];
    }
    return $string;
}

有没有更好的方法来解决这个问题?

3 个答案:

答案 0 :(得分:7)

首先,您尝试 implode 字符串,而不是explode。其次,不,没有语法快捷方式来表示操作将所有子阵列中的所有id键连接在一起“。你可以这样简洁地做到这一点:

echo join(',', array_map(function ($i) { return $i['id']; }, $arr));

答案 1 :(得分:2)

从PHP5.5开始,您可以调用array_column()来隔离多维数组中的单列数据。

代码:(Demo

$arr=array();
$arr[0]['id']='123';
$arr[0]['otherdatas']='';
$arr[1]['id']='234';
$arr[1]['otherdatas']='';
$arr[2]['id']='567';

echo implode(',',array_column($arr,'id'));

输出:

123,234,567

答案 2 :(得分:-1)

不,这不可能。

function myExplode ($data=array(),$row='id',$delimiter=','){
  $result='';
  foreach ($data as $item) $result.=($data[$row])?$delimiter.$data[$row]:'';
  return $result;
}
相关问题