【问题标题】:How to print a multidimensional array that the user selected?如何打印用户选择的多维数组?
【发布时间】:2017-03-14 15:43:19
【问题描述】:

三个选项是名称、击球顺序和位置。用户必须选择他/她希望对值进行排序的选项。目前,它会打印排序后的击球顺序值,因为这是我调用 echo 之前的最后一个排序顺序。当用户选择一个选项时,我该如何做到这一点,只显示该选项的输出?什么都不选也没有输出?

这里是 HTML

<!DOCTYPE html>
<html>
    <head>
        <link rel="stylesheet" type="text/css" href="Assignment.css">
    </head>
    <body>
        <main>
            <form action="Assignment1.php" method="post">
        <h2>Rays Lineup Display</h2>
        <div id="data">

            <p>Select Size</p>
            <input type="radio" name="order" value="player_name">Player Name<br>
            <input type="radio" name="order" value="pos">Position<br>
            <input type="radio" name="order" value="bats">Batting Order<br>

          </div>

            <div id="buttons">
                <label>&nbsp;</label>
                <input type="submit" value="Submit"><br>
            </div>
            </form>
        </main>
    </body>
</html>

PHP 文件

    <!DOCTYPE html>
    <html>
        <head>
            <link rel="stylesheet" type="text/css" href="Assignment.css">
        </head>
        <body>                    

         <?php

            $selection_list = array('pos', 'player_name', 'bats');
            $players = array (
            array('pos' => 'SS', 'player_name' => 'Beckham', 'bats' => 1),
            array('pos' => 'C', 'player_name' => 'Casali', 'bats' => 8),
            array('pos' => '2B', 'player_name' => 'Forsythe', 'bats' => 3),
            array('pos' => '1B', 'player_name' => 'Loney', 'bats' => 7),
            array('pos' => 'LF', 'player_name' => 'Jennings', 'bats' => 2),
            array('pos' => 'CF', 'player_name' => 'KierMaier', 'bats' => 9),
            array('pos' => '3B', 'player_name' => 'Longoria', 'bats' => 4),
            array('pos' => 'RF', 'player_name' => 'Mahtook', 'bats' => 5),
            array('pos' => 'DH', 'player_name' => 'Souza', 'bats' => 6),
            );


  function getSortFunction( $sortKey ) {
  return function( $personA, $personB ) use ( $sortKey ) {
    return ( $personA[$sortKey] < $personB[$sortKey] ) ? -1 : 1;
  };
}



 $order = filter_input(INPUT_POST,'order');
            usort( $players, getSortFunction( 'pos' ) );
            usort( $players, getSortFunction( 'player_name' ) );
             usort( $players, getSortFunction( 'bats' ) );
            echo '<pre>'; print_r($players); echo '<pre/>';
?>

</body>

【问题讨论】:

  • 到目前为止你有什么尝试:)?
  • @AnnSophieAngermüller 你好,我不小心放了诱饵 PHP 文件。我现在更新了。
  • 您将值保存到 $order 但您仍然对所有结果进行排序。只排序一个,与 $order 匹配

标签: php html arrays multidimensional-array


【解决方案1】:

很明显,它将全部显示。 首先,您应该使用 .$_POST[order] 进行排序选项 然后为每个 case 使用 switch 或 If 语句

编辑:

switch($order){
case "pos":
    usort( $players, getSortFunction( 'pos' ) );
    echo '<pre>'; print_r($players); echo '<pre/>';
    break;
case "player_name":
    usort( $players, getSortFunction( 'player_name' ) );
    echo '<pre>'; print_r($players); echo '<pre/>';
    break;
case "bats":
    usort( $players, getSortFunction( 'bats' ) );
    echo '<pre>'; print_r($players); echo '<pre/>';
    break;
case "";
    break;
}

【讨论】:

  • 请查看编辑,我不知道这是否有所作为。谢谢。
  • 谢谢,.$_POST[order] 让我失望了,但这是必要的改变。
猜你喜欢
  • 1970-01-01
  • 2018-08-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多