0

これはばかげているように見えますが、いくつかの HTML の後に foreach$html = 'my html code';を実行しようとしていますが、foreachエラーが発生しましたが、エラーが発生しました。Parse error: syntax error, unexpected T_FOREACH

コードは次のとおりです。

$html = "
jQuery(document).ready(function($) { 
    playlist: [".foreach($myVideos as $video) {
        echo "{";
        echo "file: 'http://www.website.com/".$video[filename]."'";
        echo "}";
    }."]
});";

それは明らかに非常に基本的なものですが、私はこれを取り除くことができないようです.私は何かを見落としています.

4

8 に答える 8

2

文字列の割り当て内で foreach を使用することはできません。代わりにこれを試してください。注: プレイリスト内の個々のオブジェクト間のコンマを取得し、値が適切にエスケープされるようにするために、動画の配列を作成し、json_encode を使用して最終出力を生成しています。

$html = "jQuery(document).ready(function($) {playlist: ";
$vids = array();
foreach($myVideos as $video) {
        $vids[] = array("file"=>"http://www.website.com/".$video["filename"]);
    }
$html.= json_encode($vids);
$html."});";

しかし、要素間に , がないため、無効な JSON データが生成されるのではないかと思います。

より良いアプローチはこれを行うことです(php 5.3以降)

$videoList = array_map(function($a){ return array("file"=>"http://www.website.com/".$a["filename"]."'"); }, $myVideos);
$html = "jQuery(document).ready(function($) {playlist:".json_encode($videoList)."});";
于 2013-07-16T15:13:57.943 に答える
1

これは XY 問題の例です (基本的に、これは機器の理解が不十分なために発生する問題です。詳細については、こちらを参照してください)。

json でエンコードされた文字列を返そうとしています。以下を試してみませんか?

$jsonArr = array()
foreach($myVideos as $video) {
    $jsonArr[] = "http://www.website.com/".$video[filename];
}
$json = json_encode($jsonArr);
$html = "jQuery(document).ready(function($) { playlist: [$json]});";

これはテストされておらず、角括弧と中括弧を少し調整する必要があるかもしれないことに注意してください。

于 2013-07-16T15:18:09.027 に答える
0

このすべての後、 $html をエコーすることを忘れないでください...

    $html = "jQuery(document).ready(function($) { 
        playlist: [";

    foreach($myVideos as $video) {
            $html .= "{";
            $html .=  "file: 'http://www.website.com/".$video[filename]."'";
            $html .=  "}";
    }

    $html .= "]});";
    echo $html;
于 2013-07-16T15:22:33.807 に答える
0

あなたはまだ文字列を完成させていません。; が必要です。foreachの前に。それが機能する場合でも、エコー部分がブラウザに出力され、文字列には出力されません。

$html = "
jQuery(document).ready(function($) {playlist: [";
foreach($myVideos as $video) {
    $html .= "{file: 'http://www.website.com/".$video[filename]."'}";
}
$html.= "]});";

.=あなたの文字列を追加します。


また、$myVideos配列を直接json_encodeしないjson文字列を作成しようとしているように見えますか?

于 2013-07-16T15:17:10.520 に答える
0

最初に適切なデータ構造を構築することに集中してから、周囲のコードを生成する必要があります。

$playList = array();
foreach($myVideos as $video) {
    $playList[] = array(
        'file' => 'http://www.website.com/' . urlencode($video[filename]),
    );
}

$script = 'jQuery(function($) {
    var playList = ' . json_encode($playList) . ';
    // etc
});';
于 2013-07-16T15:30:37.753 に答える