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

时间:2016-08-02 18:15:42

标签: php mysql arrays laravel lumen

我有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])。我还可以做些什么? 最后我希望每个值都是一个字符串!

3 个答案:

答案 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>';

Documentation here

答案 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'];