PHP - 在 php 中显示具有特定键和值的关联数组的四个项目
PHP -displaying four items of an associative array with specific key and value in php
我正在尝试使用 php 构建一个媒体库网站。
我有 3 个类别(书籍、电影和音乐),我将它们包含在同一个数组中,如下所示:
<?php
$catalog = [];
$catalog[101] = [
"title" => "Book1",
"img" => "img/img1.jpg",
"genre" => "genre1",
"year" => "2016",
"category" => "Books",
"author" => "someone"
];
$catalog[102] = [
"title" => "Book2",
"img" => "img/img1.jpg",
"genre" => "genre1",
"year" => "2016",
"category" => "Books",
"author" => "someone"
];
$catalog[103] = [
"title" => "Book3",
"img" => "img/img1.jpg",
"genre" => "genre1",
"year" => "2016",
"category" => "Books",
"author" => "someone"
];
$catalog[104] = [
"title" => "Book4",
"img" => "img/img1.jpg",
"genre" => "genre1",
"year" => "2016",
"category" => "Books",
"author" => "someone"
];
$catalog[105] = [
"title" => "Book5",
"img" => "img/img1.jpg",
"genre" => "genre1",
"year" => "2016",
"category" => "Books",
"author" => "someone"
];
$catalog[201] = [
"title" => "Movie1",
"img" => "img/img2.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Movies",
"actor" => "someone"
];
$catalog[202] = [
"title" => "Movie2",
"img" => "img/img2.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Movies",
"actor" => "someone"
];
$catalog[203] = [
"title" => "Movie3",
"img" => "img/img2.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Movies",
"actor" => "someone"
];
$catalog[204] = [
"title" => "Movie4",
"img" => "img/img2.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Movies",
"actor" => "someone"
];
$catalog[301] = [
"title" => "Song1",
"img" => "img/img3.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Music",
"singer" => "someone"
];
$catalog[302] = [
"title" => "Song2",
"img" => "img/img3.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Music",
"singer" => "someone"
];
$catalog[303] = [
"title" => "Song3",
"img" => "img/img3.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Music",
"singer" => "someone"
];
$catalog[304] = [
"title" => "Song4",
"img" => "img/img3.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Music",
"singer" => "someone"
];
?>
然后我在主页上只显示图书类别
"category" => "Books",
使用此代码:
<ul class="item">
<?php
foreach($catalog as $id => $tem){
if ($tem["category"] == "Books"){
echo get_item_html($id,$tem);
}
}
?>
</ul>
get_item_html函数是这样的:
<?php
function get_item_html($id,$tem){
$output = "<li><a href='#'><img class='img' src='" . $tem["img"] . "'
alt='" . $tem["title"] . "' />" . "<p>view details</p>" . "</a></li>";
return $output;
}
?>
现在所有的图书项目都会显示在主页上,但我只想随机显示其中的四个。
所以我想要的是随机显示数组的 4 个项目。但它们都应该具有键和值:"category" => "Books",.
提前谢谢你。
这个怎么样:
array_rand(array,number)
array
必填。指定数组
number
可选。指定 return
的随机键数
它return是一个数组,如果number
大于1。
您可以像这样实现它:
function is_book($value){
return $value["category"] == "Books"
}
$random_books_catalog = array_rand(array_filter( $catalog , "is_book"), 4);
打乱数组并添加一个计数器:
<?php
$nOfBooks = 4;
$countBooks = 0;
shuffle($catalog);
foreach ($catalog as $id => $tem) {
if ($tem["category"] == "Books" && $countBooks < $nOfBooks) {
echo get_item_html($id, $tem);
$countBooks++;
} elseif ($countBooks >= $nOfBooks){
// avoiding unnecessary iterations
break;
}
}
?>
我正在尝试使用 php 构建一个媒体库网站。 我有 3 个类别(书籍、电影和音乐),我将它们包含在同一个数组中,如下所示:
<?php
$catalog = [];
$catalog[101] = [
"title" => "Book1",
"img" => "img/img1.jpg",
"genre" => "genre1",
"year" => "2016",
"category" => "Books",
"author" => "someone"
];
$catalog[102] = [
"title" => "Book2",
"img" => "img/img1.jpg",
"genre" => "genre1",
"year" => "2016",
"category" => "Books",
"author" => "someone"
];
$catalog[103] = [
"title" => "Book3",
"img" => "img/img1.jpg",
"genre" => "genre1",
"year" => "2016",
"category" => "Books",
"author" => "someone"
];
$catalog[104] = [
"title" => "Book4",
"img" => "img/img1.jpg",
"genre" => "genre1",
"year" => "2016",
"category" => "Books",
"author" => "someone"
];
$catalog[105] = [
"title" => "Book5",
"img" => "img/img1.jpg",
"genre" => "genre1",
"year" => "2016",
"category" => "Books",
"author" => "someone"
];
$catalog[201] = [
"title" => "Movie1",
"img" => "img/img2.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Movies",
"actor" => "someone"
];
$catalog[202] = [
"title" => "Movie2",
"img" => "img/img2.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Movies",
"actor" => "someone"
];
$catalog[203] = [
"title" => "Movie3",
"img" => "img/img2.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Movies",
"actor" => "someone"
];
$catalog[204] = [
"title" => "Movie4",
"img" => "img/img2.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Movies",
"actor" => "someone"
];
$catalog[301] = [
"title" => "Song1",
"img" => "img/img3.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Music",
"singer" => "someone"
];
$catalog[302] = [
"title" => "Song2",
"img" => "img/img3.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Music",
"singer" => "someone"
];
$catalog[303] = [
"title" => "Song3",
"img" => "img/img3.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Music",
"singer" => "someone"
];
$catalog[304] = [
"title" => "Song4",
"img" => "img/img3.png",
"genre" => "genre1",
"year" => "2016",
"category" => "Music",
"singer" => "someone"
];
?>
然后我在主页上只显示图书类别
"category" => "Books",
使用此代码:
<ul class="item">
<?php
foreach($catalog as $id => $tem){
if ($tem["category"] == "Books"){
echo get_item_html($id,$tem);
}
}
?>
</ul>
get_item_html函数是这样的:
<?php
function get_item_html($id,$tem){
$output = "<li><a href='#'><img class='img' src='" . $tem["img"] . "'
alt='" . $tem["title"] . "' />" . "<p>view details</p>" . "</a></li>";
return $output;
}
?>
现在所有的图书项目都会显示在主页上,但我只想随机显示其中的四个。
所以我想要的是随机显示数组的 4 个项目。但它们都应该具有键和值:"category" => "Books",.
提前谢谢你。
这个怎么样:
array_rand(array,number)
array
必填。指定数组
number
可选。指定 return
它return是一个数组,如果number
大于1。
您可以像这样实现它:
function is_book($value){
return $value["category"] == "Books"
}
$random_books_catalog = array_rand(array_filter( $catalog , "is_book"), 4);
打乱数组并添加一个计数器:
<?php
$nOfBooks = 4;
$countBooks = 0;
shuffle($catalog);
foreach ($catalog as $id => $tem) {
if ($tem["category"] == "Books" && $countBooks < $nOfBooks) {
echo get_item_html($id, $tem);
$countBooks++;
} elseif ($countBooks >= $nOfBooks){
// avoiding unnecessary iterations
break;
}
}
?>