【问题标题】:Laravel collect($array)->sortBy($value)->values() Is showing on screenLaravel collect($array)->sortBy($value)->values() 显示在屏幕上
【发布时间】:2023-04-05 22:48:01
【问题描述】:

我在使用 Laravel 根据值对数组进行排序时遇到了一点问题,我所做的是将它转换为一个集合:

$array = collect($array)

然后我将其排序为:

$array = collect($array)->sortBy($sortingValue)

这里的结果是一个集合,所以下一步是把我的数据作为一个数组再次取回:

$array = collect($array)->sortBy($sortingValue)->values()

然后我在分号之间写了这段代码,因为它嵌套在一个html代码中,所以得到了这样的东西:

{{$array = collect($array)->sortBy($sortingValue)->values()}}

这工作得很好,我确实根据我粘贴到函数的参数对数组进行了排序,我遇到的问题是这导致结果以文本格式显示在我的页面上我正在执行这段代码!

知道这是从哪里来的吗?我很确定这是因为嵌套代码,但我不知道如何从我的页面中隐藏该文本,并且只将结果用于我的项目的其余部分。

谢谢。

【问题讨论】:

  • 分号之间?还有为什么这样的 php 语句的刀片回显标签?
  • @lagbox 因为它嵌套在一个 html 文件中,这不是正确的方法吗?
  • ; ... ; 分号?目前只是想弄清楚分号与此有什么关系:)
  • @lagos,如果我不放它们,代码只会将操作输出为字符串..
  • @TimLewis 感谢您的澄清,非常有帮助,不知道!

标签: arrays laravel sorting laravel-5 collections


【解决方案1】:

使用{{ }} 分配变量不是正确的方法,因为它是echoing(打印)代码到您的视图的简写。如果要在 .blade.php 文件中分配变量,请使用 @php 指令或原始 PHP 标记:

@php $array = collect($array)->sortBy($sortingValue)->values(); @endphp
<?php $array = collect($array)->sortBy($sortingValue)->values(); ?>

然后,稍后在您的代码中,您可以这样做:

@foreach($array as $record){
  {{ $record->id }}
  ...
@endforeach

(或任何其他有效属性)

【讨论】:

  • 非常感谢 :)
  • 没问题 :) 最后一个考虑因素是,如果您可以在 Controller 中定义此转换/排序,并从那里将其传递给视图,它会稍微清理您的代码(尽管有时它是无法避免,只是一个想法)
  • @TimLwis,显然是个好主意,在这个项目中,我实际上是在收回其他开发人员的代码,所以在这一点上重构所有代码有点复杂,但显然是进入的方式我未来的项目:)
  • 嗯,很好理解;重构和编写新代码有时需要单独的方法,我明白了。只要您了解前进的选项,以及什么是好的做法,什么不是好的做法等,那么您就可以了:)
  • 没错,再次感谢@TimLewis,也感谢我教我英语哈哈!
猜你喜欢
  • 1970-01-01
  • 2019-03-20
  • 2012-08-26
  • 1970-01-01
  • 2016-10-07
  • 2021-03-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多