2011-03-23 93 views
1

我有这个脚本,它的工作原理,但不是我所期望的。我需要分配值的阵列型动物的名字,现在所有的$ ARR []被命名为 “勇敢”json_encode在php

{"valor":"20"},{"valor":"50"} 

我需要

{"valor1":"20"},{"valor2":"50"} 

脚本

$query = mysql_query("SELECT valor FROM grafico") or die(mysql_error()); 

    $arr = array(); 
    while($row = mysql_fetch_assoc($query)) { 
     $arr[] = $row; 
    } 
    echo json_encode($arr); 


in ajax 

    <script type="text/javascript"> 
     jQuery(document).ready(function(){ 
      jQuery("button").click(function(){ 

      jQuery.ajax({ 
       url: "chart.php", 
       dataType: "json", 
       success: function(json){ 
        var msg = "Nome: " + json.valor1+ "\n"; 
        msg += "Sobrenome: " + json.valor2 + "\n"; 

        alert(msg); 
       } 
      }); 
      }); 
     }); 

     </script> 

问题是:我需要创建一个创建唯一名称的循环,如value1,value2,value3

like like

$arr['valor1'] = "Evandro";

我尝试了一环 - ,但我得到的内存错误

感谢

回答

2

试试这个:

$query = mysql_query("SELECT valor FROM grafico") or die(mysql_error()); 

$arr = array(); 
$i = 1; 
while($row = mysql_fetch_assoc($query)) { 
    $arr[] = array("valor{$i}" => $row["valor"]); 
    ++$i; 
} 
echo json_encode($arr); 

应该工作。另外,如果你想它,所以它与当前的回调作品改变$arr[] =线以下:

$arr["valor{$i}"] = $row["valor"]; 
+0

结果是[{“valor1”:“20”},{“valor2”:“50”}]?>但警报不起作用。它应该是工作,对吧? – 2011-03-23 23:37:30

+0

你确定它应该是jQuery(“按钮”)而不是jQuery(“#按钮”)?另外,尝试alert() - 在回调函数的最顶端的json var。 – 2011-03-23 23:41:52

+0

该警报工作,但说valor1:未定义和相同的valor2。谢谢 – 2011-03-23 23:43:33

1
$index = 1; 
while($row = mysql_fetch_assoc($query)) { 
     $key = 'valor'.index; 
     $arr[$key] = $row; 
     $index++; 
    } 

这是否给你一个内存错误?它不应该。

+0

除非你有返回值的一个令人难以置信的巨大的数量从您的查询。 – Chris 2011-03-23 23:28:48