Используя ответ splash58 в качестве отправной точки, я добавил различные части, чтобы, надеюсь, завершить его.
Я использую array_merge(['X' => 0, 'O' => 0], array_count_values($row));
, что всегда гарантирует, что записи «X» и «O» существуют, это отображается больше в столбцах, чем в строках.
Для столбцов я использую array_column()
, чтобы извлечь каждый столбец и обработать его так же, как строки.
$arrRes = array(
array("2018-08-01"=>"X" , "2018-08-02"=>"O" , "2018-08-03"=>"O" , "2018-08-04"=>"O"),
array("2018-08-01"=>"X" , "2018-08-02"=>"X" , "2018-08-03"=>"O" , "2018-08-04"=>"O"),
array("2018-08-01"=>"X" , "2018-08-02"=>"X" , "2018-08-03"=>"O" , "2018-08-04"=>"X"),
array("2018-08-01"=>"X" , "2018-08-02"=>"O" , "2018-08-03"=>"O" , "2018-08-04"=>"O"),
);
$row =[];
$col = [];
foreach($arrRes as $row){
$res[] = array_merge(['X' => 0, 'O' => 0], array_count_values($row));
}
$rowX = array_column($res,"X");
$rowO = array_column($res,"O");
foreach($arrRes[0] as $key => $row){
$col[] = array_merge(['X' => 0, 'O' => 0],
array_count_values(array_column($arrRes,$key)));
}
$colX = array_column($col,"X");
$colO = array_column($col,"O");
print_r($rowX);
print_r($rowO);
print_r($colX);
print_r($colO);
Это дает в качестве вывода ...
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 1
)
Array
(
[0] => 3
[1] => 2
[2] => 1
[3] => 3
)
Array
(
[0] => 4
[1] => 2
[2] => 0
[3] => 1
)
Array
(
[0] => 0
[1] => 2
[2] => 4
[3] => 3
)