Laravel Lumen |从数组中获取单个值


Laravel Lumen | get single values from array

我遇到了大约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])。我还能做什么?最后,我希望每个值都是字符串!

好的,现在通过阅读您的评论,我了解您期望的结果。

$getrank = array_map(
    function ($user) { return $user->codes; },
    DB::table('users')->orderBy('codes', 'desc')->take(5)->get()
);

这能满足你的需求吗?

只需使用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>';

此处的文档

您可以尝试添加到array(),这将把结果从数据库转换为数组,这样您就可以使用问题末尾提供的代码

 $getrank = DB::table('users')->select('codes')->orderBy('codes', 'desc')->get()->toArray();
foreach($getrank as $rank) {
echo $rank['codes'];
}

如果您想将代码值强制转换为字符串,它只是echo (string) $rank['codes'];