过滤数组中的特定值

时间:2013-09-02 18:34:14

标签: php filter array-filter

我想在页面上提供一些特定的团队信息(时间表/结果/排名)。每个团队都有自己的页面,每个页面都有一个team_id变量。

根据这个$ team_id,我想通过过滤包含所有团队信息的数组来设置其他一些变量的值。

例如:

Array ( 
[0] => Array ( [CompName] => Foo [ClassName] => 2e [Class] => 12 [Type] => R [Teamid] => 88107 [Team] => 1 ) 
[1] => Array ( [CompName] => Foo1 [ClassName] => 4e [Class] => 14 [Type] => R [Teamid] => 88114 [Team] => 1 ) 
[2] => Array ( [CompName] => Foo2 [ClassName] => 123 [Class] => 35 [Type] => B [Teamid] => 12348 [Team] => 3 ) 

然后我想设置变量$ teamClass,其值为[ClassName],其中[Team] == $ team_id和[Type] ==='R'。

我可以使用PHP的array_filter()吗?还是有更好的方法吗?

1 个答案:

答案 0 :(得分:0)

假设您的团队ID是唯一的,我建议使用团队的ID号作为主阵列的索引作为开头。然后,对于团队页面,您以某种方式确定团队ID值(如从GET或POST中)。然后,每个团队的其余代码都是相同的。这样做的好处是你可以为所有团队页面使用一个php文件。这是一个基本设置。需要添加一些检查和html格式等。

$teamID = $_GET['teamid'];

echo "Team ID: ".$teamID."\n";

$team = $team_array[$teamID]; // To make the remaining code more concise

echo "Team Name: ".$team['team_name']."\n";
echo "Class Name: ".$team['ClassName']."\n";
echo "Type: ".$team['Type']."\n";

等等。

另一种可能性是使用for / foreach循环的组合在数组中搜索特定的团队ID。这将为您提供特定团队信息所在的主阵列的索引。

$teamID = $_GET['teamid'];
$team = array();
for ($t = 0; $t < count($main_array); $t++) {
  if ($main_array[$t]['TeamID'] == $teamID) {
    $team = $main_array[$t];
    break;
  }
}

if (count($team) > 0) {
  // Do your team display stuff here
}