我有一个PHP数组,看起来像这样:
([NAME] => Array ( [0] => 16 [1] => 12 [2] => 4 [3] => 0 ))
([NAME2] => Array ( [0] => 19 [1] => 19 [2] => 0 [3] => 0 ))
([NAME3] => Array ( [0] => 31 [1] => 29 [2] => 2 [3] => 0 ))
此数组由 PHP 通过从数据库中提取数据生成。(数组比这大得多,但为了简单起见,我只包含 3 条记录)
我真的需要这些数据在生成条形图的脚本中使用。现在,我只需要名称和第一条记录。所以,例如,在 PHP 中
<?=$array['NAME'][0]?>
<?=$array['NAME2'][0]?>
会从每个回显我需要的信息,但我不确定如何将其放入我需要的 javascript 格式中。
这是我需要的javascript格式:
{ tech: 'NAME', value: $array['NAME'][0] },
{ tech: 'NAME2', value: $array['NAME2'][0] },
{ tech: 'NAME3', value: $array['NAME3'][0] },
{ tech: 'NAME4', value: $array['NAME4'][0] },
...etc
首选某种类型的循环,因为名称可能会有所不同。如果只是PHP,我可以做到,但我不太精通Javascript。有人可以帮我想出解决方案吗?
好消息是你不必知道太多的javascript。在 php 中创建所需的数据结构,然后使用 json_encode: http://php.net/manual/en/function.json-encode.php
<?php
$for_chart = array();
foreach($names as $key => $name){
$obj = new stdClass;
$obj->tech = $key;
$obj->value = $name[0];
$for_chart[] = $obj;
}
?>
结果是:
[{"tech":"NAME","value":1},{"tech":"NAME2","value":5},{"tech":"NAME4","value":9}]
你可以在你的JavaScript中使用它,就像这样:
<script>
var my_names = <?=json_encode($for_chart)?>;
alert(my_names[0].value); // alerts "1"
</script>
http://sandbox.onlinephpfunctions.com/code/2682f09fd5515b220402db9c600b70a0501a87d9
如果你json_encode你拥有的数组,它会得到:
{"NAME1":[16,12,4,0],"NAME2":[19,19,0,0],"NAME3":[31,29,2,0]}
这将给你一个 JavaScript 对象来迭代:
如果 json 对象位于名为 arrayData 的变量中:
var gridData = [];
for (var name in arrayData) {
var rowObj = { tech: name, value: arrayData[name][0] };
gridData.append(rowObj);
}
最后,您将拥有一个对象数组,这些对象应该是您在gridData中查找的对象。
如果您以以下格式回显它,则可以 JSON 获取数据:
[{tech: 'NAME', value: $array['NAME'][0]},{tech: 'NAME', value: $array['NAME'][0]}]
在你的js中,你可以做如下的事情:
var names = $.getJSON('http://localhost/index.php?name', function(data) {});
这样你就有一个 js 中的数组。
要获取 JavaScript 代码,只需迭代 php 数组,并像您想要的那样回显 json 记录:
<?= foreach($array as $key => $value){
echo "{ tech: '" .$key ."', value: '" .$value[0] ."'},";
}
?>
//Assuming this is your array
$getArray["NAME"] = array(16,12,4,0);
$getArray["NAME2"] = array(19,19,0,0);
$getArray["NAME3"] = array(31,29,2,0);
$newArray = array();
foreach($getArray as $indKey=>$indArrVal) {
$newArray[] = array("tech"=>$indKey, "value"=>$indArrVal[0]);
}
echo json_encode($newArray);
在这里,创建一个具有所需索引的新数组,然后使用json_encode
将其字符串化