如下这段字符串:sex-1-area-2-pagesize-18-pageindex-1  转化成数组[sex] => 1 [area] => 2 [pagesize] => 18 [pageinde] => 1我用explode,只能 [0] => sex [1] => 1 [2] => area [3] => 2 这样的上面的字符串是一个URL传递的参数

解决方案 »

  1.   

    $s = 'sex-1-area-2-pagesize-18-pageindex-1';
    foreach(array_chunk(explode('-', $s), 2) as $v) {
      $r[$v[0]] = $v[1];
    }
    print_r($r);Array
    (
        [sex] => 1
        [area] => 2
        [pagesize] => 18
        [pageindex] => 1
    )
      

  2.   

    也可以用正则$s = 'sex-1-area-2-pagesize-18-pageindex-1';
    preg_match_all('/(\w+)\-(\w+)/', $s, $r);
    $r = array_combine($r[1], $r[2]);
    print_r($r);Array
    (
        [sex] => 1
        [area] => 2
        [pagesize] => 18
        [pageindex] => 1
    )
      

  3.   

    $test = "sex-1-area-2-pagesize-18-pageindex-1";
    $preg = "/(?<=\d)-(?=[a-z])/";
    $res = preg_split($preg,$test);

    foreach($res as $tmp){
    list($key,$value) = explode("-",$tmp);
    echo $key."=>".$value;
    }
      

  4.   

    <?php
    $str = 'sex-1-area-2-pagesize-18-pageindex-1';
    $str = explode('-', $str);
    for($i=0,$max=count($str);$i<$max;$i++) {
    $result[$str[$i]] = $str[++$i];
    }
    print_r($result);