2011-01-07 337 views
0

我需要的值從PHP陣列轉移到一個JavaScript數組,以便它可以在我的應用程序中使用,我設法得到了這個: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) ? "," : ''); 
} 

有明顯實現這一點的,一個辦法就是通過其他方式來建立一個字符串,然後使用trim()功能:

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

echo trim($tasks_str, ','); 

或者,(我的最愛),你可以建立一個數組,然後使用implode就可以了:

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

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

非常感謝,正如我所說的偉大的工作 –

+0

。 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

不是一個錯過了一個趨勢:

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

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

使用implode()。這是危險的,你需要確保你將它們輸出到一個JavaScript塊之前逃脫在$ ID和$描述變量某些字符 -

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