【问题标题】:Laravel Lumen | get single values from arrayLaravel 流明 |从数组中获取单个值
【发布时间】: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( ) ?

标签: php mysql arrays laravel lumen


【解决方案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()
    );
    

    这能得到你想要的吗?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 2016-09-27
      • 2014-11-13
      相关资源
      最近更新 更多