创建一个长度不确定的数组,从 0 开始



>我有 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 个,则无法正常工作。

有没有办法让它自动工作?

所有数组都有索引。

它就是这种数据数据结构。

在 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上任意数量的值。

// as simple as this
return $array;

最新更新