如何搜索多维数组以返回多个键

时间:2015-07-13 09:25:21

标签: php arrays multidimensional-array

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

一个。要求您具有唯一的键值,例如产品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。

但我不希望它返回其他锦标赛轮次的结果,例如阵列[8] 阵列[6] ,其中任何一个玩家都是Goffin。

我似乎无法在任何地方找到这个解决方案。我是否错误地设置了我的阵列?或者期望从较小的数据集中获取数据库函数?

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分: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;
                }

        }