在php中切片数组

时间:2018-03-11 13:42:24

标签: php arrays

我有一个数组

// Store all fetched rows in a variable
$results = $stmt->fetchAll();

// Iterate through all your results
foreach($results as $row) {
    echo '<a href="http://'.$_SERVER['HTTP_HOST'].'/anbu/home.php?topic='.$row['topic_name'].'" class="list-group-item list-group-item-action justify-content-between"></a>';
}

// Re-access the first row
$firstRow = $results[0];
print_r($firstRow);

当我使用切片时

print_r($myarray);

Array ( [0] => text one ) Array ( [0] => text two ) Array ( [0] => text three ) ...  

我得到一个空数组,怎样才能将这个数组切成两半?

由于

1 个答案:

答案 0 :(得分:1)

你实际上有一个包含数组的数组,这可能是导致问题的原因。虽然我没有看到你如何得到你发布的结果......实际上你可能实际上是将slice函数应用于输出数组的每个元素。那么你肯定会为每次迭代得到一个空数组。正如所料,因为您迭代的每个元素只包含一个元素。因此,从位置1切片将导致每次都有一个空数组......

使用普通数组考虑这个简单的例子:

<?php
$input = ["one", "two", "three", "four", "five", "six"];
$output = array_slice($input, 1, 2);
print_r($output);

输出结果为:

Array
(
    [0] => two
    [1] => three
)

因此,php的array_slice()功能正常运作......

与您在帖子中建议的数组数组相同:

<?php
$input = [["one"], ["two"], ["three"], ["four"], ["five"], ["six"]];
$output = array_slice($input, 1, 2);
print_r($output);

正如预期的那样输出:

Array
(
    [0] => Array
        (
            [0] => two
        )

    [1] => Array
        (
            [0] => three
        )

)

另外考虑下面的第二条评论,你在单个字符串中有一些单词(强大是你所描述的)我自己得到了一个有意义的结果:

<?php
$input = explode(' ', "one two three four five six");
$output = array_slice($input, 1, 2);
print_r($output);

正如预期的那样,输出是:

Array
(
    [0] => two
    [1] => three
)