**已关闭。**此问题需要debugging details。它目前不接受回答。
编辑问题以包括desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将帮助其他人回答这个问题。
2天前关闭。
Improve this question
@if (isset($anime['genres']))
@foreach ($anime['genres'] as $genre)
{{ $genre['name'] . ',' }}
@endforeach
@else
@foreach (json_decode($anime->genres) as $genre)
{{ $genre->name . ',' }}
@endforeach
@endif
我有一个条件,其中**$anime['genres']
是一个数组或类型为stdClass
的对象。如果genres
是一个数组,我想使用数组表示法检索流派名称,如果它是一个类型为stdClass
的对象,则使用$genre->name
。然而,当$anime['genres']
**是一个对象时,我总是遇到错误“Cannot use an object of type stdClass as an array”,而不是输入“else”条件。$anime
是从这个函数返回的数据:
public function getAnimeDetail($slug)
{
$cachedAnimeDetail = Redis::get('anime_detail:' . $slug);
$anime = DB::table('anime')->where('slug', $slug)->first();
if ($cachedAnimeDetail) {
return json_decode($cachedAnimeDetail, true);
}
if ($anime != null) {
if ($anime->status != null || $anime->episode_count != null || $anime->duration != null ) {
return $anime;
}
}
$response = Http::get('https://this-url-api/api/v1/anime/' . $slug);
$result = $response->json();
DB::table('anime')->where('slug', $slug)->update([
'rating' => $result['data']['rating'],
'produser' => $result['data']['produser'],
'type' => $result['data']['type'],
'status' => $result['data']['status'],
'episode_count' => $result['data']['episode_count'],
'duration' => $result['data']['duration'],
'release_date' => $result['data']['release_date'],
'studio' => $result['data']['studio'],
'genres' => $result['data']['genres'],
'synopsis' => $result['data']['synopsis'],
'batch' => json_encode($result['data']['batch']),
'episode_lists' => json_encode($result['data']['episode_lists']),
]);
$result['data']['poster'] = $anime->poster;
$result['data']['slug'] = $anime->slug;
Redis::set('anime_detail:' . $slug, json_encode($result['data']), 'EX', 3600 * 24);
return $result['data'];
}
我尝试使用**isset $anime['genres']
和is_array anime['genres']
,但仍然收到错误“Cannot use an object of type stdClass as an array”,而不是输入“else”条件。
如何检查正确的选项是$anime['genres']
还是$anime->genre?
**因为它可以是两者,所以我需要检查它的条件。
2条答案
按热度按时间z9smfwbn1#
你可以这样做,如果它是一个数组或对象类型的stdClass,然后访问相应的流派名称。
如果它是一个数组,它将被直接使用。如果它不是数组,它将使用json_decode进行转换,然后您可以使用$genre->name在流派之间进行转换。
dfty9e192#
可以使用is_array()函数或is_object()函数检查任何变量的类型。
你也可以检查变量是否是特定类类型的示例。
在本例中,
$anime
可以包含'genres'
数组或对象。