【问题标题】:Big string to nice array大字符串到漂亮的数组
【发布时间】:2012-01-21 07:16:43
【问题描述】:

我需要把大字符串变成一个漂亮的数组。字符串本身是标签和标签 ID 的列表。它们的数量可以是任意数量。以下是字符串示例:29:funny,30:humor,2:lol - id:tag_name。现在,我在将其转换为数组时遇到问题 - Array ( [29] => funny [30] => humor )。我可以到达标签所在的部分

数组(

[0] = 数组(

[0] = 29

[1] = 有趣

)

[1] = 数组 (

[0] = 30

[1] = 幽默

)

)

我也看过数组函数,但似乎没有一个可以帮助我。 谁能帮帮我?

【问题讨论】:

    标签: php multidimensional-array explode


    【解决方案1】:

    这里有一些代码可以帮助您:

    $str = "29:funny,30:humor,2:lol";
    $arr = array();
    foreach (explode(',', $str) as $v) {
        list($key, $val) = explode(':', $v);
        $arr[$key] = $val;
    }
    print_r($arr);
    /* will output:
    Array
    (
        [29] => funny
        [30] => humor
        [2] => lol
    )
    */
    

    例如,您可以将 foreach 替换为 array_map,但我认为这样对您来说更简单。

    这是一个工作示例:http://codepad.org/4BpnCiEJ

    【讨论】:

      【解决方案2】:

      您可以使用explode() 来执行此操作,但需要通过两次。第一个将字符串分成配对(explode (',', $string)),第二个将每个配对分开

      $arr = explode (',', $string);
      foreach ($arr as &$pairing)
      {
          $pairing = explode (':', $pairing);
      }
      

      【讨论】:

        【解决方案3】:
        $string = '29:funny,30:humor,2:lol';
        $arr1   = explode(',', $string);
        $result = array();
        foreach ($arr1 as $element1) {
            $result[]  = explode(':', $element1);
        }
        print_r($result);
        

        【讨论】:

          【解决方案4】:

          您可以使用preg_match_all

          preg_match_all('#([\d]+):([a-zA-Z0-9]+)#', $sString, $aMatches);
          
          // Combine the keys with the values.
          $aArray = array_combine($aMatches[1], $aMatches[2]);
          
          echo "<pre>";
          print_r($aArray);
          echo "</pre>";
          

          输出:

          Array
          (
              [29] => funny
              [30] => humor
              [2] => lol
          )
          

          【讨论】:

            【解决方案5】:
            <?php
            
            $test = '29:funny,30:humor,2:lol';
            
            $tmp_array = explode(',', $test);
            
            $tag_array = ARRAY();
            
            foreach ($tmp_array AS $value) {
                $pair = explode(':', $value);
                $tag_array[$pair[0]] = $pair[1];
            }
            
            var_dump($tag_array);
            
            ?>
            

            【讨论】:

              猜你喜欢
              • 2011-01-22
              • 1970-01-01
              • 1970-01-01
              • 2011-12-15
              • 1970-01-01
              • 2013-09-14
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多