【发布时间】:2018-04-20 13:55:16
【问题描述】:
我有一个球员和分数数组,数组看起来像:-
$a = array(
array('date' => '09-04-2018','item' => 'player 1', 'score' => '1'),
array('date' => '09-04-2018','item' => 'player 2', 'score' => '2'),
array('date' => '10-04-2018','item' => 'player 1', 'score' => '1'),
array('date' => '10-04-2018','item' => 'player 2', 'score' => '2'),
array('date' => '16-04-2018','item' => 'player 1', 'score' => '3'),
array('date' => '16-04-2018','item' => 'player 2', 'score' => '4'),
array('date' => '17-04-2018','item' => 'player 1', 'score' => '3'),
array('date' => '17-04-2018','item' => 'player 2', 'score' => '4')
);
为简单起见,我只显示了 2 个玩家“玩家 1”和“玩家 2”,实际上有多个玩家
我想显示一个表格,但可以选择按天、周或月显示分数,我需要将其放入数组中,以便将其传递给数据表。
所以一周的新数组看起来像:-
$c = array(
array('date' => '15','item' => 'player 1', 'score' => '2'),
array('date' => '15','item' => 'player 2', 'score' => '4'),
array('date' => '16','item' => 'player 1', 'score' => '6'),
array('date' => '16','item' => 'player 2', 'score' => '8')
);
我可以根据日期添加分数,但这是添加所有玩家,而不是让每个玩家分开。
这是我目前所拥有的:-
<?php
$view = 0;
$a = array(
array('date' => '09-04-2018','item' => 'player 1', 'score' => '1'),
array('date' => '09-04-2018','item' => 'player 2', 'score' => '2'),
array('date' => '10-04-2018','item' => 'player 1', 'score' => '1'),
array('date' => '10-04-2018','item' => 'player 2', 'score' => '2'),
array('date' => '16-04-2018','item' => 'player 1', 'score' => '3'),
array('date' => '16-04-2018','item' => 'player 2', 'score' => '4'),
array('date' => '17-04-2018','item' => 'player 1', 'score' => '3'),
array('date' => '17-04-2018','item' => 'player 2', 'score' => '4')
);
$c =[];
foreach ($a as $i => $b)
{
$date = new DateTime($b['date']);
$player = $b['item'];
$score = $b['score'];
$key = $i;
if ($view == 1) //$view - 0 = day, 1 = week, 2 = month
{
$key = array_search($date, array_column($c, 'date'));
if ($key !== false)
{
$score= $c[$key]['score'] + $score;
}
else
{
$key = count($c);
}
}
$c[$key]['date'] = $date->format("W");
$c[$key]['item'] = $player;
$c[$key]['score'] = $score;
}
echo '<pre>';
print_r($c);
echo '<pre>';
?>
【问题讨论】:
-
$view等于 0 -
是的,我的错误......即使它是 1,我的代码也没有按照我想要的方式执行
-
那么你的问题在哪里?你有错误信息吗?输出是否与您的预期不同?
-
@WilliamPerron 问题是我无法让数组以我想要的方式显示,我可以将所有相同的日期或所有相同的玩家相加,但不能将每个玩家的所有分数相加