如何检索多数组中第一个和最后一个元素之间的元素

时间:2013-09-05 15:27:06

标签: php php-5.3

我有两个数组......多个数组 **第一个叫做位置并进入它(城市名称)  我想获取元素名称,但不是第一个或最后一个 该怎么做

location":Array (
 [0] => stdClass Object ([code] => BKK [name] => Bangkok )
 [1] => stdClass Object ( [code] => SIN [name] => Singapore Changi )
 [2] => stdClass Object ( [code] => KUL [name] => Kuala Lumpur ) )

我的代码不起作用

<?php

        foreach ($obj->location as $lo):
            if (!reset(reset($lo)) and !end(end($lo))) {
                echo $lo->name . ',';
            }
        endforeach;
        ?>

3 个答案:

答案 0 :(得分:0)

快速简便的方法如下:

$counter = 0;
$last = count($obj->location - 1);

foreach($obj->location as $lo) {
    if($counter && $counter != $last) echo $lo->name;
    $counter++;
}

虽然这假设您的数组是按照将第一个和最后一个项放在第一个和最后一个的顺序构建的。如果没有,您可能需要提前对阵列进行排序。在PHP中,决定数组中第一个和最后一个元素的是它被赋值的顺序,而不一定是键。

答案 1 :(得分:0)

使用array_slice删除数组的第一个和最后一个元素,然后使用foreach循环打印您想要的内容。

$newloc = array_slice($obj->location, 1, -1);

foreach($newloc as $loc)
{
    echo $loc->name;
}

请参阅PHP: Remove the first and last item of the array

旁注:如果你在一个非常大的数组上执行此操作,最好使用array_shift和array_pop。

答案 2 :(得分:0)

您可以使用array_slice()

$array = array_slice($obj->location, 1, -1, true); // to preserve the keys

示例:http://codepad.org/Hi4yCTXE

此外,您可以使用array_shift()删除第一个元素,使用array_pop()删除最后一个元素。通过这种方式,您将使用不带这些元素的数组,并使用索引重置