我有4个小时的问题。
$getrank = DB::table('users')->select('codes')->orderBy('codes', 'desc')->get();
var_dump($getrank);
我在数组中看到了什么。
所以我明白了:
array(6) {
[0] => object(stdClass)#62 (1) {
["codes"]=> int(584)
}
[1] => object(stdClass)#64 (1) {
["codes"]=> int(117)
} [2] => object(stdClass)#65 (1) {
["codes"]=> int(88)
} [3] => object(stdClass)#66 (1) {
["codes"]=> int(66)
} [4] => object(stdClass)#67 (1) {
["codes"]=> int(53)
} [5] => object(stdClass)#68 (1) {
["codes"]=> int(37)
}
}
但我希望他们分开。 我尝试了很多!
最后我认为这可能是我的答案:
echo $getrank[0]['codes'];
echo $getrank[1]['codes'];
echo $getrank[2]['codes'];
echo $getrank[3]['codes'];
echo $getrank[4]['codes'];
echo $getrank[5]['codes'];
但不。
我想要排名,我只需要前5([0] - [4])。我还可以做些什么? 最后我希望每个值都是一个字符串!
答案 0 :(得分:0)
好的,现在通过阅读您的评论,我了解您期望的结果。
$getrank = array_map(
function ($user) { return $user->codes; },
DB::table('users')->orderBy('codes', 'desc')->take(5)->get()
);
这能让你得到你想要的吗?
答案 1 :(得分:0)
只需使用pluck()
(或lists()
别名pluck()
)方法即可。
$codes = DB::table('users')->orderBy('codes', 'desc')->take(5)->lists('codes');
echo '<pre>';
foreach($codes as $key => $code) {
echo 'code '.$key.': '.$code.PHP_EOL;
}
echo '</pre>';
答案 2 :(得分:0)
您可以尝试添加toArray(),这会将结果从数据库转换为数组,因此您可以使用在问题结尾处提供的代码
$getrank = DB::table('users')->select('codes')->orderBy('codes', 'desc')->get()->toArray();
foreach($getrank as $rank) {
echo $rank['codes'];
}
如果你想将代码值转换为字符串,那只是echo (string) $rank['codes'];