【问题标题】:Exploding an array and removing prefix爆炸数组并删除前缀
【发布时间】:2012-11-13 04:21:47
【问题描述】:

我试图使用explode 为字符串创建一个数组。

这是我的字符串:

$string = "a:1,b:2,c:3,d:4,e:5,f:6,g:7";

这是我的完整代码:

$string = "a:1,b:2,c:3,d:4,e:5,f:6,g:7";
$d = explode(',', $string);
echo '<pre>';
var_dump($d);

然后我得到了这样的结果..

array(7) {
  [0]=>
  string(3) "a:1"
  [1]=>
  string(3) "b:2"
  [2]=>
  string(3) "c:3"
  [3]=>
  string(3) "d:4"
  [4]=>
  string(3) "e:5"
  [5]=>
  string(3) "f:6"
  [6]=>
  string(3) "g:7"
}

我怎样才能创建这样的数组呢?:

array(7) {
  ["a"]=>
  string(1) "1"
  ["b"]=>
  string(1) "2"
  ["c"]=>
  string(1) "3"
  ["d"]=>
  string(1) "4"
  ["e"]=>
  string(1) "5"
  ["f"]=>
  string(1) "6"
  ["g"]=>
  string(1) "7"
}

【问题讨论】:

    标签: php arrays multidimensional-array explode


    【解决方案1】:
    <?php 
    foreach($d as $k => $v)
    {
        $d2 = explode(':',$v);
        $array[$d2[0]] = $d2[1];
    }
    ?>
    

    【讨论】:

    • $array必须先初始化$array = array();,然后再初始化foreach
    • @Gtx PHP 处理这个没有错误,虽然我同意它应该被初始化
    【解决方案2】:

    这应该可行:

    $arr = array();
    $d = explode(',', $string);
    for($d as $item){
       list($key,$value) = explode(':', $item);
       $arr[$key] = $value;
    }
    

    【讨论】:

    • 得到这个错误解析错误:语法错误,意外的 T_VARIABLE,期待 ';'在 C:\xampp\htdocs\Colosus\modul\barang\explode.php 第 19 行
    【解决方案3】:

    这是一个使用循环的简单解决方案:

    $string = "a:1,b:2,c:3,d:4,e:5,f:6,g:7";
    $pairs = explode(',', $string);
    $a = array();
    foreach ($pairs as $pair) {
        list($k,$v) = explode(':', $pair);
        $a[$k] = $v;
    }
    var_export($a);
    

    您也可以以更实用的方式执行此操作(在 PHP >= 5.3 中):

    $string = "a:1,b:2,c:3,d:4,e:5,f:6,g:7";
    $pairs = explode(',', $string);
    $items = array_map(
        function($e){
            return explode(':', $e);
        },
        $pairs
    );
    $a = array_reduce(
        $items,
        function(&$r, $e) {
            $r[$e[0]] = $e[1];
            return $r;
        },
        array()
    );
    
    var_export($a);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多