【问题标题】:Using Laravel's pluck method without an associative array在没有关联数组的情况下使用 Laravel 的 pluck 方法
【发布时间】:2017-05-24 22:46:47
【问题描述】:

假设我有一个Articles 收藏,我想获取热门文章。

首先,我在Article 方法中创建了一个scopePopular() 方法。很简单。

现在我想获取他们的ids,所以我会这样做:

Article::popular->pluck('id');

结果将是一个关联数组:

[
    0 => 1,
    1 => 34,
    2 => 17
    ...
];

我想得到一个普通的数组,没有键,比如:

[1, 34, 17]

我知道我可以这样做:

array_values(Article::popular->pluck('id'));

但我相信 Laravel 有更简洁的方法来做到这一点。有什么想法吗?

【问题讨论】:

  • php 中没有这样的东西。所有数组都有它们的索引。 [0=>1, 1=>34] 和 [1, 34] 之间实际上没有区别。

标签: php arrays laravel associative-array pluck


【解决方案1】:
$store_type = \App\Websites::find($request->store_id)->first()->store_type;

// 输出 - 只是一个类似“live”的字符串 // 有一个选项,比如演示、直播、登台 ...

它可能对其他人有用。

【讨论】:

    【解决方案2】:

    所有数组都有索引。

    [
        0 => 1,
        1 => 34,
        2 => 17
    ];
    

    等于

    [1, 34, 17]
    

    换句话说:

    $a1 = [0 => 1, 1 => 34, 2 => 17];
    $a2 = [1, 34, 17];
    $a1 === $a2;
    // returns True
    

    【讨论】:

    • 你是对的。我遇到的问题是因为我对数组结构的态度不好。感谢您澄清它:)
    【解决方案3】:

    这正是你所需要和你得到的,默认情况下 php 具有从 0 开始的增量键。

    您希望看到类似于我假设的 JSON 数组的内容。 只需返回数组,您将在浏览器中看到 JSOn 数组,但内部只是这样。

    请确认并告诉我。谢谢

    【讨论】:

      【解决方案4】:

      您可以使用values() 方法,它是array_values() 的包装器:

      Article::popular->pluck('id')->values();
      

      【讨论】:

      猜你喜欢
      • 2011-04-18
      • 1970-01-01
      • 2017-09-10
      • 1970-01-01
      • 2017-03-07
      • 2016-03-28
      • 2018-10-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多