0

少し問題があります。私は異なるチーム名を持つphpにいくつかの配列を持っています。各配列には、特定のリーグのチームが含まれています。追加ボタンをクリックすると、カレンダーに新しいエントリを追加するオプションが表示されます。ドロップダウンにそのリーグのチームのみを表示したい。追加ボタンのonclick どの部門がクリックされたかを知るjavascript関数を呼び出します。ただし、表示するチームの情報を JavaScript に渡すには、php 配列の 1 つを渡す必要があります。私が抱えている問題は、どのリーグのjavascriptがオンになっているかに応じて、どの配列を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コード。

4

3 に答える 3

0

次のコードで何かを見逃したと思います:

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

当然、次のようになります。

var myarray = ["<?php echo $htmlimploded[]?>"]; 
于 2012-04-12T04:19:36.863 に答える
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 に答える
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 に答える