【问题标题】:PHP if name appears more than once in foreach loopPHP 如果名称在 foreach 循环中出现多次
【发布时间】:2013-03-13 23:30:28
【问题描述】:

我想确定同一个团队名称(使用变量$home_team['team_name']$away_team['team_name'] 输出)是否在

if ($game_date_converted == $next_monday) 

声明。

如果团队名称出现多次(例如,出现两次),我希望该文本以红色显示。

简而言之,对于比赛列表,如果球队名称(可能是主队或客队)出现两次,则以 RED 显示该球队名称。

感谢您的帮助!

<?php foreach ($games as $game) { ?>

<?php

$team_id = $game['home_team_id'];
$home_team = sw::shared()->teams->getForID($team_id); 

$away_team_id = $game['away_team_id'];
$away_team = sw::shared()->teams->getForID($away_team_id); 

$leagues = sw::shared()->packages->getAll(); 

$game_date = $game['date'];
$game_date_converted = date('Y-m-d', strtotime($game_date));

$date_converted = date('l', strtotime($game_date));
?>

<?php if ($game_date_converted == $next_monday) { ?>
    <tr>
        <td><?php echo $home_team['team_name']; ?></td>
        <td><?php echo $away_team['team_name']; ?></td>


    <!-- more HTML -->

【问题讨论】:

    标签: php arrays pdo


    【解决方案1】:

    再次调整。没问题 !! 所有渲染的团队都有一个带类的跨度,因此可以使用 javascript 读取它们。然后我读取其中的文本内容并将其放入一个数组中,看看我是否有多个值。如果是,我会在 HTML 中查找所有给我双重内容的内容,并为它们添加一个类。

    <?php echo "<td><span class='team'>" . $home_team['team_name'] . "</span></td>"; ?>
    <?php echo "<td><span class='team'>" . $away_team['team_name'] . "</span></td>"; ?>
    
      $(document).ready(function () {
                var teams = Array();
                $(".team").each(function () {
    
                    teams.push($(this).text());
    
                });
                teams.sort();
    
                for (var i = 0; i < teams.length; i++) {
    
                    if (teams[i] === teams[i + 1]) {
    
                        $(".team").each(function () {
    
                            if ($(this).text() == teams[i]) {
                                $(this).addClass("doubleteam");
                            }
                        });
                    }
                }
    
            });
    

    见:http://jsfiddle.net/djwave28/TNAGr/37/

    这会贯穿您当天的赛程显示并寻找双打球队。如果找到它们,它将添加“doubleteam”类。您可以在 CSS 样式表中根据需要设置此类的样式。此外,您还可以在 CSS 表中整体设置团队名称的样式。 我希望这正是你的样子

    【讨论】:

    • 感谢更新的解决方案。但是你看,球队的名字是不同的。它显示的是特定日期的比赛日程,所以有多个球队的名字。例如,一支球队可能是“老鹰队”,另一支球队可能是“喷气机队”......因此,如果主队名称“老鹰队”出现两次,则以红色显示该队名,而不是队名“喷气机队”,除非出现两次还。我认为应该涉及一些php?再次感谢
    • 谁能帮我解决这个问题?
    • OK ...您在一天中有多个游戏活动要显示。如果一支球队在那天打了不止一次,你希望它是红色的。翻译正确吗?
    • 修改了代码和小提琴。再试一次,看看这是否适合你。 :-) ...如果是,请将其标记为答案。
    • 谢谢!这是完美的,除了我使用 ajax 链接在页面上加载不同日期的时间表......我怎样才能让 jQuery 在内容刷新后再次读取?我试图将其设置为在点击每个链接时运行,但没有成功。
    【解决方案2】:

    如果您希望设置其显示方式的样式,您可能需要在团队的解析中添加一个类名(yourclass),然后应用 css。

    <td><?php echo "<span class='home-team'>" . $home_team['team_name'] . "</span>"; ?></td>
    <td><?php echo "<span class='away-team'>" . $away_team['team_name'] . "</span>"; ?></td>
    

    您可以在 head 部分添加您的 jquery 库:

    然后添加jquery脚本:

        $(document).ready(function(){
    
            $(".home-team").not(":first").css("color","red");
            $(".away-team").not(":first").css("color","red");
       });
    

    最好在现场看到这个,所以我创建了一个小提琴:http://jsfiddle.net/djwave28/TNAGr/13/

    【讨论】:

    • 嗨 .. 抱歉稍后回复。是的,通过添加类名,您可以专门选择承载该类的元素。因此,您可以使用 CSS 选择第二个。因此,您可以将其反转。因为你希望所有其他人都是红色的。我将编辑代码以更具体地反映您正在寻找的内容..
    • 转念一想,经过快速测试,我发现第 n 个子选择器似乎不适用于 span 元素。但是,如果您能够应用一些 javascript,则可以使用 jquery 非常简单地做到这一点。我再次调整了代码......
    • 非常感谢您为此提供的所有帮助。唯一的调整是第一个也应该是红色的。基本上我在这里尝试做的是用红色显示拥有双头(意思是两场比赛)的球队。因此,如果同一个团队名称多次出现,则每次出现时都将团队名称显示为红色。再次感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多