0

我有一个小问题。我在 php 中有几个具有不同团队名称的数组。每个数组包含某个联赛的球队。当我单击添加按钮时,我可以选择将新条目添加到日历中。我希望下拉列表中只有该联盟的球队。添加按钮的 onclick 我调用了一个知道单击了哪个分区的 javascript 函数。但是,为了向 javascript 提供要显示哪些团队的信息,我必须将其中一个 php 数组传递给它。我遇到的问题是告诉 php 将哪个数组传递给 javascript,具体取决于哪个联盟 javascript 处于启用状态。我不想自己指定数组,因为可以选择添加联赛,这意味着每次添加联赛时都必须编写更多代码。该网站的重点是动态的。

这是一些代码。

for ($i = 0;$i<$sizeof($leaguesarray);$i++){
    $htmlimploded[$i] = implode($html[$i]);
}

在这里,我使用了 emplode 使我所有的 php 数组都可以读取到 javascript 中。

for (var h = 0; h<size; h++){ // goes through every league 
    if(h == leaguenum){ // finds the league for the clicked add button
        // this is the line that I have trouble with I can't think of 
        //anyway of telling it which array to use since it is serverside code.
        var myarray = ["<? echo $htmlimploded[]?>"]; 
    }
}

上面的 Javascript 代码。

4

3 回答 3

0

我认为您错过了以下代码中的某些内容:

var myarray = ["<? echo $htmlimploded[]?>"]; 

按理说,它应该是:

var myarray = ["<?php echo $htmlimploded[]?>"]; 
于 2012-04-12T04:19:36.863 回答
0

假设 PHP 知道联赛和球队的名称,而 JavaScript 知道被点击的联赛名称,您可以将球队名称的数组包装在一个对象中,并将联赛作为属性名称。

<?php 
$arr = array("League1" => array("Team 1", "Team 2"), 
             "League2" => array("Team 3", "Team 4")
       );
?>
var obj = {};
<?php foreach ($arr as $k => $v): ?>
obj.<?php echo $k; ?> = ["<?php echo implode('","', $v); ?>"];
<?php endforeach; ?>

然后当用户选择联赛时,您可以循环遍历对象的属性(即联赛名称)数组。

clickedLeague = "League1";
for (var i = 0; i < obj[clickedLeague].length; i++)
{
    console.log(obj[clickedLeague][i]); // Logs the team name to console
}
于 2012-04-12T04:26:14.820 回答
0

内爆有效,但为什么不是 json_encode($array)?这是一种更简单的内置方式,可以将 php 数组转换为 javascript 对象或数组。如果你有类似的东西:

$league1 = array('team1', 'team2');
$league2 = array('team3, 'team4') ;

然后制作一个多维关联数组:

$all_teams = array('league1'=>$league1, 'league2'=>$league2);

将其编码为 Javascript 对象并将其打印到您的 JS 中:

$encoded = json_encode($all_teams);
print 'var teamObject = '.$encoded.';';

如果你要 console.log(teamObject) 你会看到这样的:

{"league1": ["team1", "team2"], "league2": ["team3", "team4"]}

看起来很复杂,但现在您可以非常轻松地拉出您想要的阵列。联赛 1 数组是 teamObject.league1,联赛 2 数组是 teamObject.league2,依此类推。

于 2012-04-12T05:04:04.843 回答