2

文字列に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"
}
4

3 に答える 3

6

これは機能するはずです:

$arr = array();
$d = explode(',', $string);
for($d as $item){
   list($key,$value) = explode(':', $item);
   $arr[$key] = $value;
}
于 2012-11-13T04:24:36.297 に答える
6
<?php 
foreach($d as $k => $v)
{
    $d2 = explode(':',$v);
    $array[$d2[0]] = $d2[1];
}
?>
于 2012-11-13T04:26:01.757 に答える
1

これは、ループを使用した単純なソリューションです。

$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);
于 2012-11-13T04:37:36.750 に答える