2011-01-07 15 views
0

私はこれに立ち上がっするために管理している、それは私のアプリケーションで使用できるように、JavaScriptの配列にPHPの配列から値を転送する必要があります。PHPのforeachループ

var Descriptions = array(<?php 
       foreach ($tasks as $task) { 
       $ID = $task['ID']; 
       $description = $task['description']; 

       echo $ID . "[" . $description . "]" . ","; 
       } 

       ?>); 

、それが正常に動作します私はPHPに最後の配列値の後にコンマを入れないように指示する方法を知らない。余分なカンマが構文エラーの原因となり、コードが壊れます。

任意のアイデアを事前に感謝し、 RayQuang

答えて

2

迅速かつ汚い方法:その後、

for($i = 0, $c = count($tasks); $i < $c; $i++) { 
    $task = $tasks[$i]; 
    ... 
    echo $ID . "[" . $description . "]" . (($i != $c-1) ? "," : ''); 
} 

文字列を構築する一つの方法は次のようになり、これを達成する他の方法は、明らかに存在しており、

$tasks_str = ''; 
foreach(...) { 
    ... 
    $tasks_str .= ... 
} 

echo trim($tasks_str, ','); 

それとも、(私のお気に入り)、あなたは配列を構築し、その後を使用することができます。trim()機能を使用しますその上で0:

$tasks_array = array(); 
foreach(...) { 
    ... 
    $tasks_array[] = ... 
} 

echo implode(',', $tasks_array); 
+0

おかげでたくさん、 –

+0

素晴らしい働いた - これは危険です、あなたがJavaScriptのブロックにそれらを出力する前に、$ IDおよび$説明変数に特定の文字をエスケープすることを確認する必要があります。 json_encodeはすでにこれを行います。 – Stephen

0
var DescriptionsString = <?php 
      foreach ($tasks as $task) { 
      $ID = $task['ID']; 
      $description = $task['description']; 

      echo $ID . "[" . $description . "]" . ","; 
      } 

      ?>; 
var Descriptions = DescriptionsString.split(','); 
+0

これは動作しません。 –

0

試して、

var Descriptions = array(<?php 
       $str = ''; 
       foreach ($tasks as $task) { 
       $ID = $task['ID']; 
       $description = $task['description']; 

       $str .= $ID . "[" . $description . "]" . ","; 
       } 
       echo trim($str,',');  
       ?>); 
1

は手動でそれを構築しようとしない、使用json_encode

+0

ありがとう、これは素晴らしいアイデアです、後で試してみます。 –

+0

なぜ他の方法を使用したいのか理解できません。 – Stephen

0

ない傾向を逃すために1:

$out = array(); 
foreach ($tasks as $task) { 
    $ID = $task['ID']; 
    $description = $task['description']; 

    $out[] = $ID . "[" . $description . "]"; 
} 
echo implode(',', $out); 

implode()を使用してください。私が言ったように

1
var Descriptions = <?=json_encode($tasks);?>;