将数组拆分为多个部分,并使用值列表输出字符串

时间:2017-07-13 13:34:35

标签: php mysql arrays list

我试图找出如何从数据库中分解/分区值数组,并将单个列表转换为由逗号分隔的值字符串。

如果我没有从查询中对列表进行分区,我可以使用我想要的格式显示整个列表。

<?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

?>

在这段代码中,我无法弄清楚如何正确输出列表“$ values”,除非我在foreach循环中定义$ values [0]或$ values [1]等,但这显然只给了我一个列表。 如果我只是在foreach循环中使用$值,我会得到一个Array to string错误。数据是动态的,我使用更多的代码来定义和分区列表大小,以获得更大量的结果,除了代码中显示的2,将列表分成4和8个部分。

<?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;
}

?>

我可以做些什么来从所有列表中获取我想要的输出,以便我可以使用这些列表或稍后小批量处理它们?

我想要的是主分区列表中的各个列表以与第一个脚本中的整个列表相同的格式输出。
例如:

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

以下是使用具有约200个结果的分区函数后数组输出的示例。

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

        )

)

1 个答案:

答案 0 :(得分:0)

最后一个转储显示您正在获取一组数组。这可以让你轻松地循环它们,以(在这种情况下)25:

的组中输出它们
foreach ( $values as $i => $a ) {
    echo "List $i: " . join( ', ', $a );
}