为什么尝试/捕获不起作用?
try {
$tagsData = $vid["items"][0]["snippet"]["tags"];
$tagsArray = array();
$tagsString = "";
for ($x = 0; $x < count($tagsData); $x++) {
$tagsArray[$x] = $tagsData[$x];
$tagsString .= $tagsArray[$x] . " , ";
}
echo $tagsString;
} catch (\Exception $e) {
echo "There is no tags.";
}
YouTube上有些视频没有标签,因此$ tagsData将为空...
答案 0 :(得分:0)
在您的try块中,您的代码不会引发任何异常。 您可以创建一个私有方法或函数,当标签为空时会抛出异常。
function implementTagsStrings(?array $tagsData = []){
if (!isset($vid["items"][0]["snippet"]["tags"])) {
throw new \Exception("There is no tags.");
}
$tagsData = $vid["items"][0]["snippet"]["tags"];
$tagsArray = [];
$tagsString = "";
for ($x = 0; $x < count($tagsData); $x++) {
$tagsArray[$x] = $tagsData[$x];
$tagsString .= $tagsArray[$x] . " , ";
}
if (empty($tagsString)) {
throw new \Exception("There is no tags.");
}
return $tagsString;
}
然后您的代码将起作用:
try {
$tagsString = implementTagsStrings($vid);
echo $tagsString;
} catch (\Exception $e) {
echo $e->getMessage();
}
但是Niegel的评论也许更简单:
if (!isset($vid["items"][0]["snippet"]["tags"])) {
echo "There is no tags.";
} else {
$tagsArray = array();
$tagsString = "";
for ($x = 0; $x < count($tagsData); $x++) {
$tagsArray[$x] = $tagsData[$x];
$tagsString .= $tagsArray[$x] . " , ";
}
echo $tagsString;
}