【问题标题】:Fill array value to specific keys in php将数组值填充到php中的特定键
【发布时间】:2016-06-12 13:25:12
【问题描述】:

我有下面提到的数组,想将每个数组的特定值填充到下一个重复键直到第 7 个数字。

输入:

Array ( [0] => 2015-02-07 [1] => 2015-02-14 [2] => 2015-02-21 ) 预期输出:

例外的输出会是这样的

Array ( [0] => 2015-02-07, [1] => 2015-02-07, [2] => 2015-02-07, [3] => 2015-02-07, [4] => 2015-02-07, [5] => 2015-02-07, [6] => 2015-02-07, [7] => 2015-02-14, [8] => 2015-02-14, [9] => 2015-02-14, [10] => 2015-02-14, [11] => 2015-02-14, [12] => 2015-02-14, [13] => 2015-02-14, [14] => 2015-02-21, [15] => 2015-02-21, [16] => 2015-02-21, [17] => 2015-02-21, [18] => 2015-02-21, [19] => 2015-02-21, [20] => 2015-02-21 )

【问题讨论】:

    标签: php arrays codeigniter arraylist functional-programming


    【解决方案1】:

    你可以试试这个:

    $arrayDestination = array();
    foreach($arraySource as $value) {
        for ($i=0 ; $i<7 ; $i++) {
           $arrayDestination[] = $value;
        }      
    }
    

    【讨论】:

      【解决方案2】:

      试试这个

      <?php 
      
          $array =array('2015-02-07','2015-02-14','2015-02-21');
          $arr1='';
          foreach($array as $val)
          {
              for($i= 0; $i < 7; $i++)
              {
                  $arr1[]=$val;
              }
          }
          echo "<pre>"; print_r($arr1);
      ?>
      

      这将输出

      Array
      (
          [0] => 2015-02-07
          [1] => 2015-02-07
          [2] => 2015-02-07
          [3] => 2015-02-07
          [4] => 2015-02-07
          [5] => 2015-02-07
          [6] => 2015-02-07
          [7] => 2015-02-14
          [8] => 2015-02-14
          [9] => 2015-02-14
          [10] => 2015-02-14
          [11] => 2015-02-14
          [12] => 2015-02-14
          [13] => 2015-02-14
          [14] => 2015-02-21
          [15] => 2015-02-21
          [16] => 2015-02-21
          [17] => 2015-02-21
          [18] => 2015-02-21
          [19] => 2015-02-21
          [20] => 2015-02-21
      )
      

      【讨论】:

        【解决方案3】:
        You can do something like this -
        
        $arr = Array
        (
            '0' => '2015-02-07',
            '1' => '2015-02-14',
            '2' => '2015-02-21'
        );  //Input the array
        $j = 0;
        foreach($arr as $k=>$v) {
            $i = 0;
            while ($i < 7){
                $arr_final[$j] = $v;
                $i++;$j++;
            }
        }
        print_r ($arr_final); //display output
        

        【讨论】:

          【解决方案4】:
          $arrFirstArray = array(
          '0'=>'2015-02-07',
          '1'=>'2015-02-14',
          '2'=>'2015-02-21',
          );
          $intFirstArray = count($arrFirstArray);
          
          $arrSecondArray = array();
          
          for($intI=0;$intI<$intFirstArray;$intI++)
          {
          for($intJ=0;$intJ<7;$intJ++){
              global $arrSecondArray;
              $arrSecondArray[]   = $arrFirstArray[$intI];
              }
          }
          echo '<pre>';
          print_r($arrSecondArray);
          

          这会起作用。

          【讨论】:

            【解决方案5】:

            跳过所有for ...foreach ...$i= ...$i&lt; ...$i++while ... 仪式并开始使用函数。

            这是一种使用array_reducearray_mergearray_fill 的实用方法。

            $xs = ['2015-02-07', '2015-02-14', '2015-02-21'];
            
            $result = array_reduce($xs, function($ys, $x) {
                return array_merge($ys, array_fill(0, 7, $x));  
            }, []);
            
            print_r($result);
            

            输出

            Array
            (
                [0] => 2015-02-07
                [1] => 2015-02-07
                [2] => 2015-02-07
                [3] => 2015-02-07
                [4] => 2015-02-07
                [5] => 2015-02-07
                [6] => 2015-02-07
                [7] => 2015-02-14
                [8] => 2015-02-14
                [9] => 2015-02-14
                [10] => 2015-02-14
                [11] => 2015-02-14
                [12] => 2015-02-14
                [13] => 2015-02-14
                [14] => 2015-02-21
                [15] => 2015-02-21
                [16] => 2015-02-21
                [17] => 2015-02-21
                [18] => 2015-02-21
                [19] => 2015-02-21
                [20] => 2015-02-21
            )
            

            【讨论】:

            • 是的,这是非常好的替代方法,无需使用 Foreach 和 for 循环。谢谢 naomik..
            • @Sundar 您可以尝试忘记 foreachforwhile 甚至存在。 A+ 强烈推荐。
            • 你有 MYSQL 数据库的经验吗?我们使用 MYSQL 是后端,它的空间快用完了。那么我们怎样才能增加磁盘空间或任何替代方案呢?
            • @Sundar cmets 不是提出全新问题的地方。只需ask a new question
            猜你喜欢
            • 2012-01-06
            • 1970-01-01
            • 2021-01-03
            • 1970-01-01
            • 1970-01-01
            • 2023-03-05
            • 2020-01-11
            • 1970-01-01
            • 2023-02-06
            相关资源
            最近更新 更多