php 带有多个表达式的 switch 语句
php switch statement with multiple expressions
我有 6 个 html select 个盒子。每个 select 框包含三个值(最近媒体、流行媒体、评论媒体),我有变量 $item->content1
到 $item->content6
每个变量 return 到 select 盒子。我在下面通过 switch 语句创建了这段代码,因为我想使用 switch 语句一次而不是使用它 6 次。
代码有效,但每次 return 到最近的媒体而不是 return 到流行和评论媒体。我该如何解决这个问题,直到我的代码正确并且 return 对于所有情况?
function YPE_bsn_show_diffcontent(&$item_output, $item) {
switch (true) {
case ($item->content1 == 'recent-media' OR $item->content2 == 'recent-media' OR $item->content3 == 'recent-media' OR $item->content4 == 'recent-media' OR $item->content5 == 'recent-media' OR $item->content6 == 'recent-media'):
YPE_Bsn_Content::YPE_bsrecent_media($item_output, $item);
break;
case ($item->content1 == 'popular-media' OR $item->content2 == 'popular-media' OR $item->content3 == 'popular-media' OR $item->content4 == 'popular-media' OR $item->content5 == 'popular-media' OR $item->content6 == 'popular-media'):
YPE_Bsn_Content::YPE_bspopular_media($item_output, $item);
break;
case ($item->content1 == 'comment-media' OR $item->content2 == 'comment-media' OR $item->content3 == 'comment-media' OR $item->content4 == 'comment-media' OR $item->content5 == 'comment-media' OR $item->content6 == 'comment-media'):
YPE_Bsn_Content::YPE_bscomments_media($item_output, $item);
break;
default:
$item_output .= 'You don\'t selected content for first column';
break;
}
}
你不是在切换一个变量而是一个常量然后结果总是一样的
switch (true) {
case
.....
}
切换正确的相关变量
switch ($item->content1 ) {
case 'recent-media':
your code fo recent media
break;
....
case 'popular-media':
your code fo popular media
break;
case 'comment-media':
your code fo comment media
break;
}
基本上你以错误的方式使用 swithc 请参阅 php 文档以正确使用
在你的情况下你需要 if (and not switch)
function YPE_bsn_show_diffcontent(&$item_output, $item) {
if ($item->content1 == 'recent-media' OR
$item->content2 == 'recent-media' OR
$item->content3 == 'recent-media' OR
$item->content4 == 'recent-media' OR
$item->content5 == 'recent-media' OR
$item->content6 == 'recent-media') {
YPE_Bsn_Content::YPE_bsrecent_media($item_output, $item);
return;
}
if ($item->content1 == 'popular-media' OR
$item->content2 == 'popular-media' OR
$item->content3 == 'popular-media' OR
$item->content4 == 'popular-media' OR
$item->content5 == 'popular-media' OR
$item->content6 == 'popular-media') {
YPE_Bsn_Content::YPE_bspopular_media($item_output, $item);
return;
}
if ($item->content1 == 'comment-media' OR
$item->content2 == 'comment-media' OR
$item->content3 == 'comment-media' OR
$item->content4 == 'comment-media' OR
$item->content5 == 'comment-media' OR
$item->content6 == 'comment-media') {
YPE_Bsn_Content::YPE_bscomment_media($item_output, $item);
return;
}
$item_output .= 'You don\'t selected content for first column';
return ;
}
我有 6 个 html select 个盒子。每个 select 框包含三个值(最近媒体、流行媒体、评论媒体),我有变量 $item->content1
到 $item->content6
每个变量 return 到 select 盒子。我在下面通过 switch 语句创建了这段代码,因为我想使用 switch 语句一次而不是使用它 6 次。
代码有效,但每次 return 到最近的媒体而不是 return 到流行和评论媒体。我该如何解决这个问题,直到我的代码正确并且 return 对于所有情况?
function YPE_bsn_show_diffcontent(&$item_output, $item) {
switch (true) {
case ($item->content1 == 'recent-media' OR $item->content2 == 'recent-media' OR $item->content3 == 'recent-media' OR $item->content4 == 'recent-media' OR $item->content5 == 'recent-media' OR $item->content6 == 'recent-media'):
YPE_Bsn_Content::YPE_bsrecent_media($item_output, $item);
break;
case ($item->content1 == 'popular-media' OR $item->content2 == 'popular-media' OR $item->content3 == 'popular-media' OR $item->content4 == 'popular-media' OR $item->content5 == 'popular-media' OR $item->content6 == 'popular-media'):
YPE_Bsn_Content::YPE_bspopular_media($item_output, $item);
break;
case ($item->content1 == 'comment-media' OR $item->content2 == 'comment-media' OR $item->content3 == 'comment-media' OR $item->content4 == 'comment-media' OR $item->content5 == 'comment-media' OR $item->content6 == 'comment-media'):
YPE_Bsn_Content::YPE_bscomments_media($item_output, $item);
break;
default:
$item_output .= 'You don\'t selected content for first column';
break;
}
}
你不是在切换一个变量而是一个常量然后结果总是一样的
switch (true) {
case
.....
}
切换正确的相关变量
switch ($item->content1 ) {
case 'recent-media':
your code fo recent media
break;
....
case 'popular-media':
your code fo popular media
break;
case 'comment-media':
your code fo comment media
break;
}
基本上你以错误的方式使用 swithc 请参阅 php 文档以正确使用
在你的情况下你需要 if (and not switch)
function YPE_bsn_show_diffcontent(&$item_output, $item) {
if ($item->content1 == 'recent-media' OR
$item->content2 == 'recent-media' OR
$item->content3 == 'recent-media' OR
$item->content4 == 'recent-media' OR
$item->content5 == 'recent-media' OR
$item->content6 == 'recent-media') {
YPE_Bsn_Content::YPE_bsrecent_media($item_output, $item);
return;
}
if ($item->content1 == 'popular-media' OR
$item->content2 == 'popular-media' OR
$item->content3 == 'popular-media' OR
$item->content4 == 'popular-media' OR
$item->content5 == 'popular-media' OR
$item->content6 == 'popular-media') {
YPE_Bsn_Content::YPE_bspopular_media($item_output, $item);
return;
}
if ($item->content1 == 'comment-media' OR
$item->content2 == 'comment-media' OR
$item->content3 == 'comment-media' OR
$item->content4 == 'comment-media' OR
$item->content5 == 'comment-media' OR
$item->content6 == 'comment-media') {
YPE_Bsn_Content::YPE_bscomment_media($item_output, $item);
return;
}
$item_output .= 'You don\'t selected content for first column';
return ;
}