簡體   English   中英

在給定范圍內用零值填充數組

[英]Fill array with zero values in a a given range

我正在使用laravel 5.3,這是我的代碼

$arrayData = array();
foreach ($stats as $key => $row) {
      $arrayData[] = array(
      'number'   => $row->no,
      'level'    => $row->total_sent,
      'past'     => $row->past,
  );
}

如果我dd($arrayData)其輸出為

array:3 [▼
  0 => array:3 [▼
    "no" => "4"
    "level" => 3
    "past" => "3"
  ]
  1 => array:3 [▼
    "no" => "6"
    "level" => 3
    "past" => "3"
  ]
  2 => array:3 [▼
    "no" => "9"
    "level" => 3
    "past" => "3"
  ]
]

在上面沒有,分別是4,6,9。 我希望最終輸出中應包含完整的數據。 如果沒有退出,那其他的數字應該為零。

在上述情況下,期望的輸出是因為缺少位置,所以將有一個零值的正確數字

array:11 [▼
  0 => array:3 [▼
    "no" => "0"
    "level" => 0
    "past" => "0"
  ]
  1 => array:3 [▼
    "no" => "1"
    "level" => 0
    "past" => "0"
  ]
  2 => array:3 [▼
    "no" => "2"
    "level" => 0
    "past" => "0"
  ]
  3 => array:3 [▼
    "no" => "3"
    "level" => 0
    "past" => "0"
  ]
  4 => array:3 [▼
    "no" => "4"
    "level" => 3
    "past" => "3"
  ]
  5 => array:3 [▼
    "no" => "5"
    "level" => 0
    "past" => "0"
  ]
  6 => array:3 [▼
    "no" => "6"
    "level" => 3
    "past" => "3"
  ]
  7 => array:3 [▼
    "no" => "7"
    "level" => 0
    "past" => "0"
  ]
  8 => array:3 [▼
    "no" => "8"
    "level" => 0
    "past" => "0"
  ]
  9 => array:3 [▼
    "no" => "9"
    "level" => 3
    "past" => "3"
  ]
  10 => array:3 [▼
    "no" => "10"
    "level" => 0
    "past" => "0"
  ]

希望問題清楚

提前致謝

用零填充值初始化數組:

for ($i=0; $i <= 10; $i++) {
    $arrayData[$i] = [
        "no" => "$i",
        "level" => 0,
        "past" => "0",
    ];
}
foreach ($stats as $key => $row) {
    $arrayData[$row->no] = [
        'no' => $row->no,
        'level' => $row->total_sent,
        'past' => $row->past,
    ];
}

如果你不知道的最大no值,你需要得到它。 然后使用array_fill函數用零個元素填充$arrayData

$stats = collect($stats);
$arrayData = [];

$maxNo = $stats->max('no');

$arrayData = array_fill(0, $maxNo, [
    'number' => 0,
    'level' => 0,
    'past' => 0
]);

$stats->each(function($row) use(&$arrayData){
    $arrayData[$row->no] = [
        'number'   => $row->no,
        'level'    => $row->total_sent,
        'past'     => $row->past,
    ];
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM