如何从数组的字符串中获取第一个标题

问题描述 投票:-1回答:3

我正在尝试从电影中获取所有流派,并将它们自动放入选择列表,而无需进行硬编码。因此,如果我在octobercms后端制作一部新电影并将这种类型的电影“恐怖,神秘,惊悚”添加到选择列表中,那么我想知道如何将它们分离到选择列表中,或者只是将“恐怖”添加到选择列表。

我一直都遇到这些错误:

strtok() expects parameter 1 to be string, array given
preg_split() expects parameter 2 to be string, array given

到目前为止我正在做什么:

 function onFilterMovies() {

 $this->prepareVars();

 }

 function prepareVars() {

 $options = post('Filter', []);

 $this['movies'] = Movie::listFrontEnd($options);


 $movies = Movie::all();
 $genres = [];

 foreach($movies as $movie) {

 $genres[] = $movie->genre;

 }

 $this['genres'] = $genres;

 }


<select class="dropdown" name="Filter[genres]"> 
    <option value="">Genres</option>
    {% for genre in genres | sort %}
    <option value="{{genre}}">{{ genre }}</option> 
    {% endfor %}
</select>

选择列表的图像:

Image for the select list:

php arrays laravel octobercms
3个回答
1
投票

您可以结合使用array_reducearray_reduce来获取所有流派,然后使用preg_split来删除重复项:

preg_split

然后,您只需要为该选择元素循环遍历该数组。

Demo:array_unique


0
投票

尝试使用阵列爆炸:

array_unique

$genres = array_unique(array_reduce($movies, static function ($genres, $movie) { $movie_genres = preg_split('/\s*,\s*/', $movie->genre); return array_merge($genres, $movie_genres); }, []));


0
投票

另外,您也可以使用采摘和减少来做Laravel Way

https://3v4l.org/I8JQP
© www.soinside.com 2019 - 2024. All rights reserved.