Ich versuche herauszufinden, wie man ein Array von Werten aus der Datenbank zerlegen/partitionieren und die einzelnen Listen in eine Reihe von Werten durch ein Komma getrennt.Split-Array in mehrere Teile und Ausgabe-String mit Werteliste
Wenn ich die Liste nicht von der Abfrage partitioniere, kann ich die ganze Liste in dem Format anzeigen lassen, das ich verwenden möchte.
<?php
$get_values = mysqli_query($con, "SELECT * FROM table");
$value_list = array();
while ($row = mysqli_fetch_array($get_values))
{
$value_list[] = $row['value'];
}
foreach($value_list as $key => $value)
print_r($value . ", ");
//Outputs all values with comma as a list.
//value0, value1, value2, ... value25
?>
In diesem Code Ich stelle dar, kann nicht heraus, wie die Listen „$ Werte“, um korrekt ausgegeben zu bekommen, wenn ich $ Werte [0] oder $ Werte [1] usw. in der Schleife foreach definieren, sondern dass offensichtlich gibt nur mir eine Liste. Wenn ich nur $ Werte in der foreach-Schleife verwende, bekomme ich einen Array zu String-Fehler. Die Daten sind dynamisch und ich verwende mehr Code, um Listengrößen für größere Mengen von Ergebnissen zu definieren und zu partitionieren, neben den 2 im Code gezeigten, die die Liste in 4 und 8 Teile aufteilen.
<?php
$get_values = mysqli_query($con, "SELECT * FROM table");
$value_list = array();
$counter = 0;
while ($row = mysqli_fetch_array($get_values))
{
$counter++;
$value_list[] = $row['value'];
}
//Partition into 4 or 8 lists depending on amount of values returned
if($counter >=0 && $counter <=100)
{
$values = partition($value_list, 4);
}
if($counter >=100 && $counter <=200)
{
$values = partition($value_list, 8);
}
foreach($values[0] as $key => $value)
print_r($value . ", ");
function partition(Array $list, $p) {
$listlen = count($list);
$partlen = floor($listlen/$p);
$partrem = $listlen % $p;
$partition = array();
$mark = 0;
for($px = 0; $px < $p; $px ++) {
$incr = ($px < $partrem) ? $partlen + 1 : $partlen;
$partition[$px] = array_slice($list, $mark, $incr);
$mark += $incr;
}
return $partition;
}
?>
Gibt es etwas, was ich tun kann um die Ausgabe zu erhalten, die ich von allen Listen will, so dass ich die Listen sie verwenden kann oder verarbeiten später in kleinen Chargen?
Was ich will ist die einzelnen Listen aus der Hauptpartitionierte Liste im gleichen Format wie die gesamte Liste aus dem ersten Skript ausgeben.
Beispiel:
list0:
value0, value1, value2, ... value25
list1:
value0, value1, value2, ... value25
list2:
value0, value1, value2, ... value25
list3:
value0, value1, value2, ... value25
list4:
value0, value1, value2, ... value25
list5:
value0, value1, value2, ... value25
list6:
value0, value1, value2, ... value25
list7:
value0, value1, value2, ... value25
Hier ist ein Beispiel dafür, was die Feldausgabe aussieht, nachdem die Partitionsfunktion mit etwa 200 Ergebnissen.
Array
(
[0] => Array
(
[0] => value0
[1] => value1
[2] => value2
...
...
...
[25] => value25
)
[1] => Array
(
[0] => value0
[1] => value1
[2] => value2
...
...
...
[25] => value25
)
[2] => Array
(
[0] => value0
[1] => value1
[2] => value2
...
...
...
[25] => value25
)
...
...
...
...
[7] => Array
(
[0] => value0
[1] => value1
[2] => value2
...
...
...
[25] => value25
)
)
Diese Frage ist nicht sehr klar. Der letzte Dump zeigte, dass Sie ein Array von Arrays erhalten. Dies sollte es Ihnen leicht machen, sie zu durchlaufen und sie in Gruppen von (in diesem Fall) 25 auszugeben: 'foreach ($ Werte als $ i => $ a) {echo" Liste $ i: ". beitreten (',', $ a); } ''. Willst du das nicht? – kmoser
Sieht aus wie es genau das tut, was ich wollte. Danke ich schätze das. – John
Wenn du das als Antwort posten willst, werde ich es akzeptieren. – John