我有50个(或更少)数组,我需要在一个数组中返回它们。
我正在使用
$results = DB::table('coinflip_history')->where('ct', Auth::user()->steamid)->orWhere('t', Auth::user()->steamid)->orderByRaw('round_id DESC')->limit(50)->get();
$results = json_decode($results, true);
$i=1;
foreach ($results as $key => $value) {
if (!$value['winner']) $array[$i] = array('secret' => null, 'winning_string' => null, 'hash' => $value['hash'], 'timestamp' => $value['time']);
else $array[$i] = array('secret' => $value['secret'], 'winning_string' => $value['percentage'], 'hash' => $value['hash'], 'timestamp' => $value['time']);
$i++;
}
return array($array[1], $array[2], $array[3], $array[4], $array[5], $array[6], $array[7], $array[8], $array[9], $array[10], $array[11], $array[12], $array[13], $array[14], $array[15], $array[16], $array[17], $array[18], $array[19], $array[20], $array[21], $array[22], $array[23], $array[24], $array[25], $array[26], $array[27], $array[28], $array[29], $array[30], $array[31], $array[32], $array[33], $array[34], $array[35], $array[36], $array[37], $array[38], $array[39], $array[40], $array[41], $array[42], $array[43], $array[44], $array[45], $array[46], $array[47], $array[48], $array[49], $array[50]);
但如果阵列少于50个则无法正常工作。
有没有办法让它自动运作?
答案 0 :(得分:1)
所有数组都有索引。
它只是that kind of data data structure。
PHP没有办法生成没有索引的数组。它不会是一个数组。
您使用代码完成的唯一事情是从1开始生成一个数组,然后从0开始创建一个新数组。
由于两者在功能上都是等价的,我想当你返回一个基于1的数组时,问题就存在了。
所以如果你愿意的话:
$array = [];
$results = json_decode($results, true);
foreach($results as $key => $value){
if(!$value['winner']) {
$array[] = [
'secret' => null,
'winning_string' => null,
'hash' => $value['hash'],
'timestamp' => $value['time']
];
}
else {
$array[] = [
'secret' => $value['secret'],
'winning_string' => $value['percentage'],
'hash' => $value['hash'],
'timestamp' => $value['time']
];
}
}
return $array;
你得到了你需要的东西。这比你在那里做的100%相同,但步数更少,并且适用于返回的$array
上的任意数量的值。
答案 1 :(得分:-1)
// as simple as this
return $array;