【问题标题】:PHP array how to mergePHP数组如何合并
【发布时间】:2017-05-25 21:38:20
【问题描述】:

我有这个数组:

array(9) {
    [0]=>
    string(5) ",103,"
    [1]=>
    string(4) ",12,"
    [2]=>
    string(5) ",123,"
    [3]=>
    string(5) ",135,"
    [4]=>
    string(5) ",148,"
    [5]=>
    string(4) ",27,"
    [6]=>
    string(16) ",30,31,38,39,40,"
    [7]=>
    string(4) ",35,"
    [8]=>
    string(4) ",94,"
}

如何将它合并到这样的数组中?

$a = array(12, 27, 30, 31, 35, 38, 39, 40, ...)

我试过了,但不知道...

【问题讨论】:

  • 不知道这两个数组是如何相关的
  • 那么您是说您希望将该数组中的所有值放入一个数组中并进行排序?
  • 是的,比尔,没错。

标签: php arrays merge


【解决方案1】:

使用preg_match_allsort函数的解决方案:

$arr = [",103,",",12,",",123,",",135,",",148,",",27,",",30,31,38,39,40,",",35,",",94,"];
preg_match_all('/\d+/', implode("", $arr), $m);
$result = $m[0];
sort($result);

print_r($result);

输出:

Array
(
    [0] => 12
    [1] => 27
    [2] => 30
    [3] => 31
    [4] => 35
    [5] => 38
    [6] => 39
    [7] => 40
    [8] => 94
    [9] => 103
    [10] => 123
    [11] => 135
    [12] => 148
)

【讨论】:

    【解决方案2】:
    <?php
    $test = array(",103,", ",12,", ",123,", ",135,", ",148,", ",27,",",30,31,38,39,40,", ",35,", ",94,");
    
    $values = array_filter(explode(',', implode(",", $test)));
    sort($values);
    print_r($values);
    
    • 内爆所有值到一个字符串
    • 转换为数组
    • 删除空值
    • 排序

    会输出

    Array
    (
        [0] => 12
        [1] => 27
        [2] => 30
        [3] => 31
        [4] => 35
        [5] => 38
        [6] => 39
        [7] => 40
        [8] => 94
        [9] => 103
        [10] => 123
        [11] => 135
        [12] => 148
    )
    

    【讨论】:

      【解决方案3】:

      您可以遍历数组,然后用逗号将其分解。然后,如果该值不是空字符串,则将其添加到新数组中。

      $arr = [",103,", ",12,", ",123,", ",135,", ",148,", ",27,", ",30,31,38,39,40,", ",35,", ",94,"];
      $new = array();
      
      foreach ($arr as $val) {
        foreach (explode(",", $val) as $char) {
            if ($char != '') {
              array_push($new, $char);
            }
          }
        }
      

      【讨论】:

        【解决方案4】:

        试试这个:

        sort(explode(',', str_replace(',,', ',', implode('', $a))));
        

        【讨论】:

          猜你喜欢
          • 2010-09-06
          • 1970-01-01
          • 2017-10-22
          • 1970-01-01
          • 2013-06-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-12-13
          相关资源
          最近更新 更多