切换机箱仅显示阵列中的第一个键

时间:2013-07-11 04:11:18

标签: php arrays switch-statement

下午好,

我想用这个脚本完成的是一个程序,它根据所选的感兴趣区域返回三个相关链接。在第一页上是一个表单,我使用<input type="checkbox">并将name属性设置为interests[]来将用户选择存储在数组中。跳转后的代码块是表单处理脚本,如果表单验证,则回显链接。我遇到问题的地方是我的切换案例函数displaylinks();仅在处理表单后显示interests[0],即使print_r显示的内容

Array (
[0] => Web Development
[1] => Startups
[2] => Video Games
)

如果选择了多个兴趣,则仅显示阵列第一个位置的兴趣。有任何想法吗?

//Success condition:: for name with interests
if($_POST["fullname"] != "" && (isset($_POST['interests']))) {
echo '<div class="interests">';     
displayLinks();//Links are only displayed when the form validates successfully
echo '<a  href="/Exercise1">Return to start.</a>';          
    echo '</div>';  
} 

function displayLinks(){

$interests = $_POST['interests'];
print_r($interests);//just to see whats in the array for debugging

switch (TRUE) {
    case in_array("Design", $interests):
         echo "<h2>Design</h2>";
         echo '<p><a href="http://dribbble.com" target="_blank">Dribbble</a><br/>';
         echo '<a href="http://news.layervault.com" target="_blank">Designer News</a><br/>';
         echo '<a href="http://beta.psdboard.com/" target="_blank">PSDboard</a></p>';
         break; 
    case in_array("Web Development", $interests):
         echo "<h2>Web Development</h2>";
         echo '<p><a href="http://jqapi.com/" target="_blank">jQuery API</a><br/>';
         echo '<a href="https://developers.google.com/speed/libraries/" target="_blank">Google API Library</a><br/>';
         echo '<a href="https://developer.mozilla.org/en-US/" target="_blank">Mozilla Developer Network</a></p>';
         break; 
    case in_array("Startups", $interests):
         echo "<h2>Startups</h2>";
         echo '<p><a href="http://news.ycombinator.com" target="_blank">Hacker News</a><br/>';
         echo '<a href="http://andrewchen.co/" target="_blank">@andrewchen</a><br/>';
         echo '<a href="http://techcrunch.com/" target="_blank">Tech Crunch</a></p>';
         break; 
    case in_array("Video Games", $interests):
         echo "<h2>Video Games</h2>";
         echo '<p><a href="http://twitch.tv" target="_blank">TwitchTV</a><br/>';
         echo '<a href="http://www.giantbomb.com/" target="_blank">Giant Bomb</a><br/>';
         echo '<a href="http://tap-repeatedly.com" target="_blank">Tap Repeatedly</a></p>';
         break;                     
    case in_array("Online Magazines", $interests):
         echo "<h2>Online Magazines</h2>";
         echo '<p><a href="https://medium.com/" target="_blank">Medium</a><br/>';
         echo '<a href="http://svbtle.com" target="_blank">Svbtle</a><br/>';
         echo '<a href="http://explorecreaterepeat.com/" target="_blank">Explore Create Repeat</a></p>';
}
}//End display links function

编辑:回答第一个答案

  

这是一项家庭作业,而且该标题为使用开关盒提供了更多的分数。

1 个答案:

答案 0 :(得分:3)

您使用的是错误的工具。 switch语句旨在仅选择一个条件。你想要的是一整串单独的if块。

if (in_array("Design", $interests)) {
     echo "<h2>Design</h2>";
     echo '<p><a href="http://dribbble.com" target="_blank">Dribbble</a><br/>';
     echo '<a href="http://news.layervault.com" target="_blank">Designer News</a><br/>';
     echo '<a href="http://beta.psdboard.com/" target="_blank">PSDboard</a></p>';
}

if (in_array("Web Development", $interests)) {
     echo "<h2>Web Development</h2>";
     echo '<p><a href="http://jqapi.com/" target="_blank">jQuery API</a><br/>';
     echo '<a href="https://developers.google.com/speed/libraries/" target="_blank">Google API Library</a><br/>';
     echo '<a href="https://developer.mozilla.org/en-US/" target="_blank">Mozilla Developer Network</a></p>';
}

// etc...