【问题标题】:Split an php array [closed]拆分一个php数组[关闭]
【发布时间】:2013-07-04 06:39:20
【问题描述】:

我使用$_POST 获取所有input 值,它会生成一个数组,如:

[seen1] => 1
[flag1] => 0
[time1] => 275
[qtsnums1] => 17
[seen2] => 0
[flag2] => 0
[time2] => 0
[qtsnums2] => 11
[seen3] => 0
[flag3] => 0
[time3] => 0
[qtsnums3] => 9
[seen4] => 0
[flag4] => 0
[time4] => 0
[qtsnums4] => 5
[seen5] => 0
[flag5] => 0
[time5] => 0
[qtsnums5] => 10

我要拆分:

[seen1] => 1
[flag1] => 0
[time1] => 275
[qtsnums1] => 17

并插入1个变量,如何做到这一点?

【问题讨论】:

  • 改写你的问题
  • @rr- 他想做分块操作。
  • 是否需要用键中的 1,2,3,.. 后缀来重构数组?
  • @all : 我想用 xml 标签中的键存储第一个 4 数组值。
  • @Jay 您的问题应该被关闭,因为您没有向我们展示您尝试过的内容。下次与我们分享您失败的代码。

标签: php arrays


【解决方案1】:

array_chunk 会帮你拆分数组:

$new = array_chunk($_POST, 4, true) ; //Do not forget to use TRUE to save indices

$desired_result = $new[0] ;
var_dump($desired_result) ;

【讨论】:

    【解决方案2】:

    假设您的输入数组名为 $input,您可以使用以下命令创建新数组:

    $output = array();
    $wantedKeys = array('seen1', 'flag1', 'time1', 'qtsnums1');
    foreach ($wantedKeys as $key)
    {
        $output[$key] = $input[$key];
    }
    print_r($output);
    

    获取包含前四个键的列表,无论它们如何命名:

    $wantedKeys = array_slice(array_keys($input), 0, 4);
    

    您也可以使用前面提到的array_chunk。如果你想摆脱单线,你可以这样做:

    $output = current(array_chunk($input, 4, true));
    

    请注意,它会在较新版本的 PHP 中生成有关引用的警告。在这种情况下,您可以使用:

    $output = array_chunk($input, 4, true)[0];
    

    但是,这会在旧 PHP 上产生语法错误。

    【讨论】:

      【解决方案3】:

      是的,如果你只需要前 4 个,array_slice() 就可以了。但下面是一个通用的,它将输入数组分成不同的块。

      $array = array(
          'seen1' => 1,
          'flag1' => 0,
          'time1' => 3,
          'qtsnums1' => 4,
          'seen2' => 1,
          'flag2' => 0,
          'time2' => 3,
          'qtsnums2' => 4,
          'seen3' => 1,
          'flag3' => 0,
          'time3' => 3,
          'qtsnums3' => 4,
      );
      
      $new_array = array();
      
      foreach($array as $key => $value){
          preg_match('/([^0-9]+)(\d+)/', $key, $matches);
          $new_array[$matches[2]][$matches[1]] = $value;
      }
      print_r($new_array);
      

      输出如下

      Array
      (
          [1] => Array
              (
                  [seen] => 1
                  [flag] => 0
                  [time] => 3
                  [qtsnums] => 4
              )
      
          [2] => Array
              (
                  [seen] => 1
                  [flag] => 0
                  [time] => 3
                  [qtsnums] => 4
              )
      
          [3] => Array
              (
                  [seen] => 1
                  [flag] => 0
                  [time] => 3
                  [qtsnums] => 4
              )
      
      )
      

      因此,$new_array[1] 将获得第一个块,$new_array[2] 将获得第二个块,依此类推。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-03-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-19
        • 2017-06-05
        • 1970-01-01
        相关资源
        最近更新 更多