php - 如何从数组的特定对象中获取 id?
问题描述
我需要从一个包含 141 部电影的数组中显示,这是 10 部最古老的电影。在我这样做之后,我需要为他们每个人都制作一个链接到他们的页面,并附上电影的描述。所以,我用它来获取最古老的电影:
$movies = json_decode(file_get_contents('https://raw.githubusercontent.com/yegor-sytnyk/movies-list/master/db.json'))->movies;
$numbers = array_column($movies, 'year','title');
$numbers2=asort($numbers, SORT_NUMERIC);
$numbers3=array_slice($numbers, 0, 10);
为了制作链接,我使用了这个:
<?php foreach($numbers3 as $key=>$value){?>
<a href="single.php?movie_id"><?php echo "$key-$value",'<br>';?></a>
<?php }?>
还有 single.php 页面:
$movieId=$_GET['movie_id'];
if(isset($movieId)&& $movieId && $movieId !=""){
function get_movie($value){
global $movieId;
if($movieId==$value->id){
return TRUE;
}else{
return FALSE;
}
}
$moviesFilter=array_filter($movies, "get_movie", ARRAY_FILTER_USE_BOTH);
if(count($moviesFilter)>0){
$movie= reset($moviesFilter);
}?>
<?php}?>
在我按下它们后,我无法从那 10 部特定电影中找到显示内容的 id ...:(
解决方案
我宁愿使用电影的真实 ID 作为参数:
<?php
$data = json_decode(file_get_contents('https://raw.githubusercontent.com/yegor-sytnyk/movies-list/master/db.json'), true);
$movies = array_key_exists('movies', $data) ? $data['movies'] : [];
$filtered_movies = $movies;
uasort( $filtered_movies, function ($a, $b) {
return $a['year'] - $b['year'];
});
$filtered_movies = array_slice($filtered_movies, 0, 10);
foreach ($filtered_movies as $id => $movie) {
?>
<a href="single.php?movie_id=<?= $id ?>"><?= $movie['year']." - ".$movie['title'] ?></a>
<?php
}
json_decode 提供解码为关联数组,而不是对象。对于这种情况,这是更有利的解决方案。现在,通过唯一 ID 获取电影也更漂亮single.php
:
$movieId = $_GET['movie_id'];
$data = json_decode(file_get_contents('https://raw.githubusercontent.com/yegor-sytnyk/movies-list/master/db.json'), true);
$movies = array_key_exists('movies', $data) ? $data['movies'] : [];
if (array_key_exists($movieId, $movies)) {
?>
Movie details:<br>
Title: <?= $movies[$movieId]['title'] ?><br>
Year: <?= $movies[$movieId]['year'] ?><br>
Genres: <?= join(', ', $movies[$movieId]['genres']) ?><br>
<?php
} else {
?>
The desired movie does not exist.
<?php
}
推荐阅读
- spring-boot - 需要在 Spring Boot 中动态生成 url 以进行招摇
- javascript - 如何确定 jquery ajax 调用何时完成?
- sql - 将数值转换为 VARCHAR2 会引发 ORA-03113
- teradata - 如何检查 Teradata 中的列是 CASESPECIFIC 还是 NOT CASESPECIFIC
- vue.js - Vue v-model 命名最佳实践
- python - spaCy中的token和span(来自文档的切片)有什么区别?
- java - Java Spark获取kafka解析json
- ssl - WebSocket 握手:意外的响应代码:200 - React 客户端
- python - Python datetime.datetime 不在 pandas._libs.tslibs.timestamps.Timestamp 系列中
- stm32 - STM32 Nucleo F103RB:LD1 使用外部电源缓慢闪烁