2012-04-12 64 views
0

我有一個小問題。我有不同的團隊名稱在PHP中的幾個數組。每個陣列包含某個聯賽的球隊。當我點擊一個添加按鈕時,我可以選擇添加一個新的條目到日曆中。我希望下降到只有聯盟的球隊。點擊添加按鈕我調用了一個javascript函數,它知道點擊了哪個分部。然而,爲了給JavaScript提供哪些團隊可以顯示的信息,我必須將它傳遞給一個php數組。我遇到的問題是告訴PHP哪些數組傳遞給JavaScript,取決於哪個聯盟的JavaScript。我不想自己指定陣列,因爲有一個選項可以添加聯盟,這意味着每次添加聯盟時都必須使用更多代碼進行編碼。該網站的重點是動態的。PHP的JavaScript衝突與傳遞到PHP

這裏是一些代碼。

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上面的代碼。

+0

你沒有分配給每個聯賽也將在你的陣列中的一個關鍵唯一標識符? – prodigitalson 2012-04-12 04:05:43

+0

我不這麼認爲。無論哪種方式,我仍然必須指定它。我想我只是要改變我的方法,只是將數據傳遞給表單並使用新參數刷新頁面並擺脫javascript。 – user541597 2012-04-12 04:10:26

+0

那麼你可以做到這一點,但你應該有一種方式來引用每個聯賽的唯一。你爲什麼不使用數據庫? – prodigitalson 2012-04-12 04:11:34

回答

0

爆的作品,但爲什麼不json_encode($數組)?這是一個更簡單的方法,可以將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,依此類推。

0

我想你錯過下面的代碼的東西:

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

通過正確的,它應該是:

var myarray = ["<?php echo $htmlimploded[]?>"]; 
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 
}