【问题标题】:How convert a column from a multi-dimensional array into a comma-separated string?如何将多维数组中的列转换为逗号分隔的字符串?
【发布时间】:2012-05-10 18:30:44
【问题描述】:

这样的数组能炸吗?

$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;
}

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

【问题讨论】:

    标签: php csv multidimensional-array implode


    【解决方案1】:

    从 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】:

      不,这不可能。

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 简洁。 @Steve,请记住,匿名函数(例如本示例)仅适用于 PHP 5.3+
        • 对于 PHP 5.2-:join(',', array_map(create_function('$i', 'return $i["id"];'), $arr)).
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-21
        • 2011-06-18
        • 2019-05-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多