2015-07-13 105 views
-2

我有一个用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 
        ) 
      ) 

基本上,我需要能够搜索具体一个子如阵列[7]并把结果返回该Goffin说,包含player1或player2作为名称。

但我不希望它从其他比赛轮返回结果如阵列[8]阵列[6]其中任一播放机是高芬。

我似乎无法在任何地方找到此解决方案。我是否错误地设置了我的数组?或期望数据库功能较少的数据集?

任何帮助,将不胜感激。

+0

*我需要能够Goffin说,搜索包含player2作为名字的数组[7]。但我不希望它返回数组[8],其中任何一个选手都是Goffin。* - 什么是差异? – splash58

+0

如果存在关于阵列布局一些混乱: 第一个维度是比赛回合数,0-9 第二个维度是在该轮1-16 第三维匹配数是的细节具体的比赛。 因此,我需要能够在特定的回合中找到特定的匹配项,并返回一个可让我为特定匹配拉取其余信息的密钥。 举个例子,我知道Goffin在第7轮比赛中出场,但是我需要能够找到比赛细节,我该如何搜索存取数组[7] [1]中的数组并获取比赛细节。 – Keith

+0

@ splash58 _这很重要,因为每场比赛的统计数据都不相同。但是参加锦标赛的选手可能会在不同的比赛中参加7场比赛。我试图找到一名玩家参加的比赛,给定一轮和玩家的名字。我可能不得不返回并创建一个具有2个参数的一维数组。我只是想通过让每一轮都有自己的比赛阵列来寻求一种更优雅,更高效的解决方案。 – Keith

回答

0

这不正是我想要解决这个问题,但我能得到我想要通过识别特定回合数后运行一个循环的结果的方式:

$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; 
       } 

     }