我真的很抱歉我的标题不好,因为我不知道如何缩短我的问题。我早些时候在我正在尝试的事情上得到了一些帮助,但现在我又被卡住了,无法再次离开我的盒子。有帮助的人可以帮帮我。
这些代码有点太长了,所以希望仅仅通过措辞就能给出我想要的想法。
好的,所以我有一个表格,比如说左上角的单选按钮,让人们选择然后提交。然后我使用票数/票数并将其输入饼图。然后我意识到,如果没有人投票支持左/右/上,或者假设其中一个没有被投票,那么我会收到一个错误,因为数据甚至不在我的 data.json 文件中。
因此,如果值/数据不在 data.json YET 中,我怎样才能使某个选项(左/右/上)为 0?
对不起我的英语不好,但希望你能理解我想问的......
这是我的代码……当然,我跳过了发布正文、html标签和东西……
在我的 index.php
<form action="store.php" method="post">
<?php
$music_type = array("pop", "rock", "metallic");
foreach($music_type as $type)
{
echo $type . '<input type="radio" name="type" value='. $type . '>' . '<br>' . PHP_EOL;
}
?>
在我的 store.php 中
<?php
$file_handle = fopen('data.json', 'a');
if($file_handle) {
fwrite(
$file_handle,
json_encode($_POST).PHP_EOL
);
fclose($file_handle);
}
else {
echo 'Error opening data file.';
}
$file = file('data.json'); // each line gets added to the $file array
$votes = array(); // initiate $votes to an array
foreach($file as $line)
{
// json decode current line
$vote = json_decode($line, true);
// use the vote as the key
$key = $vote['type'];
// check if current vote exits. If it does increment vote by 1
if(isset($votes[ $key ]))
{
$votes[ $key ]++;
}
// vote doesn't exist yet. Add vote to votes (creates new key). Initiate vote with 1
else
{
$votes[ $key ] = 1;
}
}
echo "<h1>Vote Results</h1>";
foreach($votes as $vote => $count)
{
echo "<b>$vote</b> has $count votes<br />";
}
$sum = $votes['metallic'] + $votes['pop'] + $votes['rock'];
$circle_degree = 360;
$metallic_pie = $votes['metallic'] / $sum * $circle_degree;
$pop_pie = $votes['pop'] / $sum * $circle_degree;
$rock_pie = $votes['rock'] / $sum * $circle_degree;
?>
<canvas id="piechart1" width="400" height="400"></canvas>
<script>
piechart("piechart1", ["cyan", "yellow", "green"], [ <?php echo $metallic_pie;?>,
<?php echo $pop_pie;?>,
<?php echo $rock_pie;?>]);
</script>
并且只在我的 data.json 中说
{"type":"rock"}
{"type":"metallic"}
{"type":"metallic"}
我知道有些人说这不是有效的 json,但我相信从我之前的帖子中有人告诉我,因为我使用的是收音机而不是复选框等等,但我真正的问题是因为我的 json 只包含这些 {"type": "rock"} {"type":"metallic"} 存在而不是 {"type":"pop"} 我怎样才能使 pop 的值为 0。没有 {"type":"pop"} 甚至存在于数据中。 json php 不记得 json 中的任何内容。
希望你明白我的问题是什么,再次为我糟糕的解释和英语感到抱歉