我有这段代码,将从csv文件生成多维数组。我需要生成具有相等数量的子数组的类似数组。第一个数组的内容将被拆分成块,并且是csv内容,第二个数组需要用随机数填充。 我正在使用此代码,但是我只能生成一个仅包含156个随机数的数组,而这不是我所需要的。我如何生成一个由156个子数组组成的数组,每个子数组由8个数字组成? 这是我的代码:
foreach( $csv->getRecords() as $records){
unset($records['nux']);
foreach (array_chunk($records, 8) as $record) {
$nSamples[] = $record;
$nLabels[] = 'vc';
for( $i = 0; $i < count($nSamples); $i++ ){
$lSamples[$i] = mt_rand(1,90);
}
}
}
更新:
这是两个数组的示例,我需要第二个数组与第一个相似:
随机数数组:
array(156) {
[0]=>
array(156) {
[0]=>
int(20)
[1]=>
int(84)
[2]=>
int(17)
[3]=>
int(64)
[4]=>
int(86)
[5]=>
int(17)
[6]=>
int(66)
[7]=>
int(35)
[8]=>
int(59)
[9]=>
int(54)
[10]=>
int(87)
...
正确的数组:
array(156) {
[0]=>
array(8) {
[0]=>
string(1) "1"
[1]=>
string(2) "19"
[2]=>
string(2) "26"
[3]=>
string(2) "44"
[4]=>
string(2) "61"
[5]=>
string(2) "89"
[6]=>
string(2) "84"
[7]=>
string(2) "64"
}
[1]=>
array(8) {
[0]=>
string(1) "5"
[1]=>
string(2) "19"
[2]=>
string(2) "28"
[3]=>
string(2) "43"
[4]=>
string(2) "58"
[5]=>
string(2) "82"
[6]=>
string(1) "1"
[7]=>
string(2) "18"
}
要回复评论,156不是硬编码的,而是csv记录的数量。
答案 0 :(得分:1)
由于随机数与CSV文件无关,因此您可以在读取CSV的循环之外全部执行此操作。只需使用嵌套循环:
$lSamples = [];
for ($i = 0; $i < 156; $i++) {
for ($j = 0; $j < 8; $j++) {
$lSamples[$i][] = mt_rand(1, 90);
}
}
如果实际上应该为CSV的每一行都是8个随机数,而不是156个硬编码,那么只需将内部循环放在foreach()
循环中即可。
$lSamples = [];
foreach( $csv->getRecords() as $i => $records){
unset($records['nux']);
foreach (array_chunk($records, 8) as $record) {
$nSamples[] = $record;
$nLabels[] = 'vc';
for ($j = 0; $j < 8; $j++) {
$lSamples[$i][] = mt_rand(1, 90);
}
}
}