2011-01-07 135 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);?>;