修改数组格式

时间:2013-03-24 22:07:44

标签: php jquery arrays formatting

(对不起,我之前发过一个非常类似的问题,但看起来我的原始问题有点偏离)

这是我的代码:

$.ajax({                                      
      url: 'receive-country.php',    //the script to call to get data
      dataType: 'json',                //data format      
      success: function(data)          //on recieve of reply
      {
            var inputArray = data;
            alert(data);
            var test_data = {"af":16.63,"al":11.58,"dz":158.97};
            jQuery('#vmap').vectorMap({
                map: 'world_en',
                backgroundColor: null,
                color: '#ffffff',
                hoverColor: '#eeeeee',
                hoverOpacity: null,
                selectedColor: '#dddddd',
                values: test_data,
                enableZoom: true,
                showTooltip: true,
                scaleColors: ['#C8EEFF', '#006491'],
                normalizeFunction: 'polynomial'
            });
      }
    });

我通过Ajax收到了一些我希望在jQuery地图data上显示的#vmap。我创建了一些与地图配合得很好的test_data,但我似乎无法使data采用与test_data相同的格式。

我不确定格式化data到底是什么,但当我发出警告时,它会显示为:

US,7,US,9,US,10

如何更改格式?


以下是发送JSON数据的PHP页面:

$country_result = mysql_query("SELECT * FROM happiness ORDER BY id ASC");
  $country_array = array();
  while($row = mysql_fetch_array($country_result)) {
    $country_array[] = array($row[4], $row[2]);
  }

  echo json_encode($country_array);

谢谢!

修改

以下是console-log的屏幕截图。我不确定如何准确地阅读它。 enter image description here

3 个答案:

答案 0 :(得分:0)

我想你想得到key -> value对。所以,在PHP中更改行

$country_array[] = array($row[4], $row[2]);

$country_array[$row[4]] = $row[2];

我想,因为你要附加到PHP中的数组,你在JavaScript中得到的实际数据是['US', 7, 'US', 9, 'US', 10],而不是['US':7, 'US':9, 'US':10],正如你所料。

修改

现在我看到了你的更新。无论如何,你得到数组的数组而不是键值对的数组(这在JavaScript中是非常标准和常见的)。试试我的建议。

答案 1 :(得分:0)

从PHP data来看,很可能是一个看起来像这样的二维数组:

[[US,7],[US,9],[US,10]]

您可以通过这种方式将其转换为其他格式:

var newData = {};
for(var i=0; i<data.length; i++){
  newData[data[i][0]] = data[i][1];
}
编辑:正如其他答案所暗示的那样,要做的事情显然是解决问题的PHP方面,而不是在javascript方面解决它。我留下了答案,因为它可能会增加一些价值。

答案 2 :(得分:0)

在PHP页面中的行

$country_array[] = array($row[4], $row[2]);

应该是

 $country_array[] = array($row[4] => $row[2]);

这将使您的PHP数组关联,将json_encoded转换为Javascript对象,而不是您当前看到的Javascript数组。