【问题标题】:How to search a multidimensional array to return multiple keys如何搜索多维数组以返回多个键
【发布时间】:2015-07-13 09:25:20
【问题描述】:

我有一个用 php 编写的多维数组,它包含一个数组数组。我已经阅读了很多关于如何搜索的内容,但似乎大多数解决方案都是:

A.要求您对键具有唯一值,例如产品 ID

B.对在数组中返回多个结果感到满意

我正在寻找数组给定轮数(这是最高/第一级数组的数组编号)和玩家姓名(这将是任一键的值玩家 1 或玩家 2)。

数组看起来像这样:

Array ( 
            [0] => Array ( )
            [8] => Array ( 
                    [1] => Array ( 
                                  [Match] => 1 
                                  [Player1seed] => (Q) 
                                  [Player1name] => Mahut 
                                  [Player2seed] => (2) 
                                  [Player2name] => Goffin 
                                  [Matchscore] => 7-6(1), 6-1 
                                  [Round] => Finals 
                                  ) 
                           ) 

            [7] => Array   ( 
                   [1] => Array (
                                  [Match] => 1 
                                  [Player1seed] => (2) 
                                  [Player1name] => Goffin 
                                  [Player2seed] => 
                                  [Player2name] => Muller 
                                  [Matchscore] => 7-6(4), 6-4 
                                  [Round] => Semi-Finals 
                               ) 
                   [2] => Array
                    ( 
                                  [Match] => 2 
                                  [Player1seed] => (Q) 
                                  [Player1name] => Mahut 
                                  [Player2seed] => (WC) 
                                  [Player2name] => Haase 
                                  [Matchscore] => 5-7, 6-3, 6-4 
                                  [Round] => Semi-Finals 
                   ) 
             ) 

等等

基本上,我需要能够专门搜索一个子集,例如 array[7] 并返回包含 player1 或 player2 作为名称的结果,例如 Goffin。

但我不希望它返回其他锦标赛回合的结果,例如 array[8]array[6] 其中任一玩家都是 Goffin。 p>

我似乎无法在任何地方找到此解决方案。我是否错误地设置了我的阵列?还是期望来自较小数据集的数据库功能?

任何帮助将不胜感激。

【问题讨论】:

  • 我需要能够搜索包含 player2 作为名称的数组 [7],比如说 Goffin。但我不希望它返回数组 [8],其中任一玩家都是 Goffin。 - 有什么区别?
  • 如果数组布局有些混乱: 第一维是比赛轮数,0-9 第二维是该轮的比赛编号 1-16 第三维是细节的具体比赛。因此,我需要能够在特定回合中找到特定比赛,并返回一个密钥,以便我提取该特定比赛的其余信息。举个例子,我知道 Goffin 参加了第 7 轮比赛,但我需要能够定位比赛详情,如何搜索访问存储在数组 [7][1] 中的数组并获取比赛详情。
  • @splash58 这很重要,因为每场比赛的统计数据都不同。但是参加锦标赛的玩家最多可以在不同的回合中进行 7 场比赛。在给定特定回合和球员姓名的情况下,我试图找到一名球员参加的比赛。我可能不得不返回并创建一个包含另外 2 个参数的一维数组。我只是想通过让每一轮都有自己的匹配数组来寻找一个更优雅、更有效的解决方案。
  • 我用文字理解了你的逻辑,但你真的需要改变数组结构,因为索引 [7][1][player] 和 [8][1][player] 没有显示出含义上的差异.
  • 我想我现在真的很困惑。我认为更像是一个数据库设置,我想我认为 [7][1][player] 是一个布局,表格代表 [round number] [match number] [player]。您希望如何构造数组来完成此操作? @splash58

标签: php arrays multidimensional-array


【解决方案1】:

这不完全是我想要解决问题的方式,但我能够通过在确定特定轮数后运行循环来获得我想要的结果:

$r = $roundnumber;

        foreach( $matchesarray[$r] AS $key=>$data ){

                $winnerseed=$data['Player1seed'];
                $winnername=$data['Player1name'];
                $loserseed=$data['Player2seed'];
                $losername=$data['Player2name'];
                $matchurl=$data['Matchurl'];
                $score=$data['Matchscore'];

                if ($p1name == $winnername || $p2name == $losername){
                    $winner=$p1;
                }
                else if ($p2name == $winnername || $p1name == $losername){
                    $winner=$p2;
                }

        }

【讨论】:

    猜你喜欢
    • 2017-11-16
    • 1970-01-01
    • 2014-11-11
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多