Отдельные значения массива - PullRequest
0 голосов
/ 12 октября 2019

Я хотел бы знать, как разделить значения массива, как показано ниже, разделенные переменными: https://prnt.sc/pi98a5

1 - 7  - Artes 1 - artes1
2 - 10 - Artes 2 - artes2
3 - 8  - Artes 3 - artes2

ARRAY

$array = 
    [   
        ["1",           "2",            "3"         ],
        ["7",           "10",           "8"         ],
        ["Artes 1",     "Artes 2",      "Artes 3"   ],
        ["artes1",      "artes2",       "artes3"    ]
    ];

FOREACH

Я пытался сделать это сам, но это меня довольно запутало.

foreach ($array as $key => $row){

    foreach ($array[$key] as $key2 => $row2){

        echo $row2; //1237108Artes 1Artes 2Artes 3artes1artes2artes3

    }

}

TEST ONLINE

- https://repl.it/@tiagocaus/EgftYyui

- https://ideone.com/yahAkQ

Ответы [ 5 ]

2 голосов
/ 12 октября 2019

Используя вкладки (это зависит от того, куда выводятся данные), вы можете просто implode() данные, используя array_column(), чтобы извлечь столбец из всех строк ...

for ( $i = 0; $i < count($array[0]); $i++ ) {
    echo implode("\t-\t", array_column($array, $i)).PHP_EOL;
}

дает ...

1   -   7   -   Artes 1 -   artes1
2   -   10  -   Artes 2 -   artes2
3   -   8   -   Artes 3 -   artes3

Чтобы просто преобразовать данные ...

$trans = [];
for ( $i = 0; $i < count($array[0]); $i++ ) {
    $trans[] =  array_column($array, $i);
}
1 голос
/ 12 октября 2019

Так что в основном работают ответы других пользователей, но я думаю, что вы не можете понять, как вы можете поместить эти значения где-то в отдельную строку.

$array =[

    ["1",           "2",            "3"         ],
    ["7",           "10",           "8"         ],
    ["Artes 1",     "Artes 2",      "Artes 3"   ],
    ["artes1",      "artes2",       "artes3"    ]
];

$arr = [];
$newArray=array();
foreach ($array as $key => $value) {
    foreach ($value as $key2 => $value2) {
        $newArray[$key2][]=$value2;

    } 
}

$arr = [];
foreach($newArray as $val){
    // $arr[] = implode(' - ', $val);

    $key = $val[0];

    $arr[$key] = array(
    "title" => $val[2],
    "var" => $val[3],
    "value" => $val[1],
    );
}

print_r($arr);


// A            B        C         D
// 1    -       7   - Artes 1 - artes1
// 2    -       10  - Artes 2 - artes2
// 3    -       8   - Artes 3 - artes3
1 голос
/ 12 октября 2019

Поместите массив, затем соедините каждую строку, как, Демо

$array_transpose = null;
foreach($array as $k_row => $row){
    foreach($row as $k_col => $v){
        $array_transpose[$k_col][$k_row] = $v;
    }
}
foreach($array_transpose as $row){
    echo join("\t-\t",$row) . "\n";
}
1 голос
/ 12 октября 2019

Это поможет вам:

<table>
<?php
$array = [ ["1", "2", "3" ], ["7", "10", "8" ], ["Artes 1", "Artes 2", "Artes 3" ], ["artes1", "artes2", "artes3" ] ];
foreach ($array as $key => $row){ 
echo "<tr>";
foreach($array as $key2=> $row2){
echo "<td>".$row2[$key]."</td>";
} 
echo "</tr>";
}?>
</table>

Редактировать : Попробуйте понять код

<table>
<?php
$array = [ ["1", "2", "3" ], ["7", "10", "8" ], ["Artes 1", "Artes 2", "Artes 3" ], ["artes1", "artes2", "artes3" ] ];
$new_arr=[];
foreach ($array as $key => $row){
$var=[];
echo "<tr>";
foreach($array as $key2=> $row2){
echo "<td>".$row2[$key]."</td>";
array_push($var,$row2[$key]);
} 
array_push($new_arr,$var);
echo "</tr>";
}
foreach($new_arr as $key => $row){
foreach($row as $key2=> $row2){
echo $row2;
}
}?>
</table>

Это создаст массив $new_array. Попытайтесь повторить и увидеть вывод из того же кода

1 голос
/ 12 октября 2019
$array = 
    array(  
        ["1",           "2",            "3"         ],
        ["7",           "10",           "8"         ],
        ["Artes 1",     "Artes 2",      "Artes 3"   ],
        ["artes1",      "artes2",       "artes3"    ]
    );

    $newArray=array();
    foreach ($array as $key => $value) {
        foreach ($value as $key2 => $value2) {
            $newArray[$key2][]=$value2;

        }
    }
    foreach ($newArray as $key => $value) {
        foreach ($value as $key2 => $value2) {
             if($key2!=0)
             echo " - ";    
             echo "$value2";
        }
        echo "<br>";
    }
...