【问题标题】:Separate items in a string into two arrays将字符串中的项目分成两个数组
【发布时间】:2019-11-30 03:12:51
【问题描述】:

如何在 PHP 中将此字符串拆分为两个数组?字符串中可能有很多项。

$str = "20x9999,24x65,40x5";

我需要从这个字符串中得到两个数组:

$array1 = array(20,24,40);
$array2 = array(9999,65,5);

我已经尝试了许多 preg_split、slice、regex 的实现。我无法完成...我需要帮助!

【问题讨论】:

    标签: php arrays regex


    【解决方案1】:

    您可以用逗号explode 字符串,然后用x 分解每个值,将结果值插入到两个数组中:

    $str = "20x9999,24x65,40x5";
    $array1 = array();
    $array2 = array();
    foreach (explode(',', $str) as $xy) {
        list($x, $y) = explode('x', $xy);
        $array1[] = $x;
        $array2[] = $y;
    }
    

    或者,您可以使用preg_match_all,匹配x 两侧的数字:

    preg_match_all('/(\d+)x(\d+)/', $str, $matches);
    $array1 = $matches[1];
    $array2 = $matches[2];
    

    在这两种情况下,输出都是:

    Array
    (
        [0] => 20
        [1] => 24
        [2] => 40
    )
    Array
    (
        [0] => 9999
        [1] => 65
        [2] => 5
    )
    

    Demo on 3v4l.org

    【讨论】:

      【解决方案2】:

      我想用preg_split,我们可以这样做:

      $str = '20x9999,24x65,40x5';
      
      $array1 = $array2 = array();
      
      foreach (preg_split("/,/", $str, -1, PREG_SPLIT_NO_EMPTY) as $key => $value) {
          $val = preg_split("/x/", $value, -1, PREG_SPLIT_NO_EMPTY);
          array_push($array1, $val[0]);
          array_push($array2, $val[1]);
      }
      
      var_dump($array1);
      var_dump($array2);
      

      输出

      array(3) {
        [0]=>
        string(2) "20"
        [1]=>
        string(2) "24"
        [2]=>
        string(2) "40"
      }
      array(3) {
        [0]=>
        string(4) "9999"
        [1]=>
        string(2) "65"
        [2]=>
        string(1) "5"
      }
      

      【讨论】:

      • preg_split 这样使用比简单的 explode 贵很多
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多