Laravel 流明 |从数组中获取单个值

Posted

技术标签:

【中文标题】Laravel 流明 |从数组中获取单个值【英文标题】:Laravel Lumen | get single values from array 【发布时间】:2016-12-08 05:44:01 【问题描述】:

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

【问题讨论】:

提示:查看array_slice()array_map() 好的,我把它分开了!谢谢!但现在我想要 dem 作为字符串! 所以你得到了数组中的前 5 个代码?或者你现在在哪里? 我有一个数组。数组读取数据库中我的表中的“代码”列。然后数组对它们进行排序(desc)。现在我想要前 5 个(最高值)作为单个字符串,这样我就可以使用它们来创建排名! $getrank = DB::table('users')->select('codes')->orderBy('codes', 'desc')->take(5)->get( ) ? 【参考方案1】:

您可以尝试添加 toArray(),这会将结果从数据库转换为数组,因此您可以使用问题末尾提供的代码

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

如果你想将代码值转换为字符串,那就是echo (string) $rank['codes'];

【讨论】:

【参考方案2】:

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

【讨论】:

对我来说也一样:for($i = 0; $i != 5; $i++) $test = $getRanks[$i]->codes; print_r($test);但问题是,它看起来像这样: 584117886653 它的 1 个字符串!我需要 5 个 @MarcJansen 它看起来像一个字符串,因为您将它们一个接一个地打印出来,没有任何空格或逗号或任何东西。看看我的编辑,你会看到 5 个单独的行。【参考方案3】:

好的,现在通过阅读您的 cmets,我了解您期望的结果是什么。

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

这能得到你想要的吗?

【讨论】:

以上是关于Laravel 流明 |从数组中获取单个值的主要内容,如果未能解决你的问题,请参考以下文章

我无法从 laravel 中的输入值中获取请求值

如何使用 laravel 和 mysql 数据库获取数组中的数组?

Laravel 验证数组迭代

我想从 Laravel 5.7 的不同表中获取单个数组中的数据

在 Laravel 7.x 中从 DB::select 获取单个值

如何使用模型类在 laravel 8 资源控制器中编辑、销毁和获取单个值?