Привет, ребята,
У меня есть массив, который выглядит так:
{
"DEP_A": {
"0": {
"Austria": [
{
"name": "NAME A",
"title": "TITLE A",
"email": "EMAIL A",
"phone": "PHONE A"
}
],
"rowspan": 1
},
"1": {
"Croatia": [
{
"name": "NAME AA",
"title": "TITLE AA",
"email": "EMAIL AA",
"phone": "PHONE AA"
}
],
"rowspan": 1
},
"rowspan": 2
},
"DEP_B": {
"0": {
"Austria": [
{
"name": "NAME B",
"title": "TITLE B",
"email": "EMAIL B",
"phone": "PHONE B"
}
],
"rowspan": 1
},
"1": {
"Croatia": [
{
"name": "NAME BB",
"title": "TITLE BB",
"email": "EMAIL BB",
"phone": "PHONE BB"
}
],
"rowspan": 1
},
"rowspan": 2
},
"DEP_C": {
"0": {
"Croatia": [
{
"name": "NAME C",
"title": "TITLE C",
"email": "EMAIL C",
"phone": "PHONE C"
}
],
"rowspan": 1
},
"rowspan": 1
},
"VAT DEP_D": {
"0": {
"Austria": [
{
"name": "NAME D",
"title": "TITLE D",
"email": "EMAIL D",
"phone": "PHONE D"
},
{
"name": "NAME DD",
"title": "TITLE DD",
"email": "EMAIL DD",
"phone": "PHONE DD"
}
],
"rowspan": 2
},
"1": {
"Croatia": [
{
"name": "NAME DDD",
"title": "TITLE DDD",
"email": "EMAIL DDD",
"phone": "PHONE DDD"
}
],
"rowspan": 1
},
"2": {
"Czech Republic": [
{
"name": "NAME DDDD",
"title": "TITLE DDDD",
"email": "EMAIL DDDD",
"phone": "PHONE DDDD"
},
{
"name": "NAME DDDDD",
"title": "TITLE DDDDD",
"email": "EMAIL DDDDD",
"phone": "PHONE DDDDD"
}
],
"rowspan": 2
}
"rowspan": 5
}
}
Вывод HTML должен быть таким:
<tr>
<td rowspan="2">DEP_A</td>
<td rowspan="1">AUSTRIA</td>
<td>NAME A</td>
<td>TITLE A</td>
<td>EMAIL A</td>
<td>PHONE A</td>
</tr>
<tr>
<td rowspan="1">CROATIA</td>
<td>NAME AA</td>
<td>TITLE AA</td>
<td>EMAIL AA</td>
<td>PHONE AA</td>
</tr>
<tr>
<td rowspan="2">DEP_B</td>
<td rowspan="1">AUSTRIA</td>
<td>NAME B</td>
<td>TITLE B</td>
<td>EMAIL B</td>
<td>PHONE B</td>
</tr>
<tr>
<td rowspan="1">CROATIA</td>
<td>NAME BB</td>
<td>TITLE BB</td>
<td>EMAIL BB</td>
<td>PHONE BB</td>
</tr>
<tr>
<td rowspan="1">DEP_C</td>
<td rowspan="1">CROATIA</td>
<td>NAME C</td>
<td>TITLE C</td>
<td>EMAIL C</td>
<td>PHONE C</td>
</tr>
<tr>
<td rowspan="5">DEP_D</td>
<td rowspan="2">AUSTRIA</td>
<td>NAME D</td>
<td>TITLE D</td>
<td>EMAIL D</td>
<td>PHONE D</td>
</tr>
<tr>
<td>NAME DD</td>
<td>TITLE DD</td>
<td>EMAIL DD</td>
<td>PHONE DD</td>
</tr>
<tr>
<td rowspan="1">CROATIA</td>
<td>NAME DDD</td>
<td>TITLE DDD</td>
<td>EMAIL DDD</td>
<td>PHONE DDD</td>
</tr>
<tr>
<td rowspan="2">CZECH REPUBLIC</td>
<td>NAME DDDD</td>
<td>TITLE DDDD</td>
<td>EMAIL DDDD</td>
<td>PHONE DDDD</td>
</tr>
<tr>
<td>NAME DDDDD</td>
<td>TITLE DDDDD</td>
<td>EMAIL DDDDD</td>
<td>PHONE DDDDD</td>
</tr>
Визуальный вывод выглядит так: https://prnt.sc/qtkqyl
Код, который я написал:
foreach($array as $key => $value){
/////////////////////
// COUNTRY COMPARE //
/////////////////////
if(isAssoc($b)){
if($array[$key][$type] > 1){
// HERE FAILS
}else{
//////////////////////////////////////////////////////////////////////////////////////////
// DONE -> IF COMPARE COUNTRIES BUT A COUNTRY DOESNT HAVE VALUE FOR SPECIFIC DEPARTMENT //
//////////////////////////////////////////////////////////////////////////////////////////
$data .= "<tr>";
////////////////
// DEPARTMENT //
////////////////
$data .= "<td rowspan='" . $value[$type] . "'>" . $key . "</td>";
foreach($value as $k => $v){
/////////////
// COUNTRY //
/////////////
if(!is_numeric($v)){
$data .= "<td rowspan='" . $value[$type] . "'>" . $k . "</td>";
}
////////////////////
// REST OF VALUES //
////////////////////
foreach($v as $key_v => $value_v){
foreach($value_v as $kv => $vv){
$data .= "<td>" . $vv . "</td>";
}
}
}
$data .= "</tr>";
}
////////////////
// NO COMPARE //
////////////////
}else{
//////////
// DONE //
//////////
$data .= pretty_print('i should not enter here while multiple countries are selected');
//////////////////////
// IF MULTIPLE ROWS //
//////////////////////
if($array[$key][$type] > 1){
$data .= "<tr>";
////////////////
// DEPARTMENT //
////////////////
$data .= "<td rowspan='" . $value[$type] . "'>" . $key . "</td>";
///////////////////////
// REST OF FIRST ROW //
///////////////////////
foreach($value[0] as $k => $v){
$data .= "<td>" . $v . "</td>";
}
$data .= "</tr>";
/////////////////////////////////////////////////////////////
// REST OF MULTIPLE VALUES DEPARTMENT STARTING WITH SECOND //
/////////////////////////////////////////////////////////////
for($i = 1; $i < $array[$key][$type]; $i++){
$data .= "<tr>";
foreach($value[$i] as $k => $v){
$data .= "<td>" . $v . "</td>";
}
$data .= "</tr>";
}
///////////////////
// IF SINGLE ROW //
///////////////////
}else{
$data .= "<tr>";
////////////////
// DEPARTMENT //
////////////////
$data .= "<td rowspan='" . $value[$type] . "'>" . $key . "</td>";
////////////////////
// REST OF VALUES //
////////////////////
foreach($value as $k => $v){
foreach($v as $key_v => $value_v){
$data .= "<td>" . $value_v . "</td>";
}
}
$data .= "</tr>";
}
}
}
Когда он говорит в коде " HERE FAILS ", я должен создать tr
с набором строк в массиве, это просто ... но если страна имеет несколько значения, которые я должен создать td
со значением диапазона строк в стране, поместить остаток кода (только первые значения), затем разбить tr и создать еще один, начиная со второго значения для этой страны, которая имеет много строк aaaand ... i Я застрял ... пожалуйста, помогите?
РЕДАКТИРОВАТЬ: Забыли добавить зависимости
<code>function isAssoc(array $arr){
if (array() === $arr) return false;
return array_keys($arr) !== range(0, count($arr) - 1);
}
function pretty_print($array){
header('Content-Type: application/json');
return "<pre>" . json_encode($array, JSON_PRETTY_PRINT) . "
";}