繁体   English   中英

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”=>“书籍”,

使用此代码:

<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可选。 指定要返回的随机密钥数

如果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;
        }
    }
?>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM