0

我有一个数组,它是我在会话中携带的对象lifeFleetSelectedTrucksList 我也有类对象fleetUnit

class fleetUnit {
    public $idgps_unit = null;
    public $serial = null;
}

class lifeFleetSelectedTrucksList {
    public $arrayList = array();
}

$listOfTrucks = new lifeFleetSelectedTrucksList(); //this is the array that I carry in session
if (!isset($_SESSION['lifeFleetSelectedTrucksList'])) {
    $_SESSION['lifeFleetSelectedTrucksList'] == null; //null the session and add new list to it.
} else {
    $listOfTrucks = $_SESSION['lifeFleetSelectedTrucksList'];
}

我用它从数组中删除元素:

$listOfTrucks = removeElement($listOfTrucks, $serial);

这是我的函数,它删除元素并返回没有元素的数组:

function removeElement($listOfTrucks, $remove) {
    for ($i = 0; $i < count($listOfTrucks->arrayList); $i++) {
        $unit = new fleetUnit();
        $unit = $listOfTrucks->arrayList[$i];
        if ($unit->serial == $remove) {
            unset($listOfTrucks->arrayList[$i]);
            break;
        } elseif ($unit->serial == '') {
            unset($listOfTrucks->arrayList[$i]);
        }
    }
    return $listOfTrucks;
}

好吧,它有效 - 元素被删除,但我有一个包含一堆空值的数组。如何返回不包含空元素的数组?似乎我没有起诉正确的事情。

4

2 回答 2

3

我认为您的意思是数组键不再连续。数组在 PHP 中没有“空值”,除非您将值设置为null.

$array = array('foo', 'bar', 'baz');
// array(0 => 'foo', 1 => 'bar', 2 => 'baz');

unset($array[1]);

// array(0 => 'foo', 2 => 'baz');

对此有两种方法:

  1. 使用 循环遍历数组foreach,而不是“手动”for循环,那么键是什么都没关系。
  2. 用 重置键array_values

此外,从列表中删除卡车确实应该是一种方法$listOfTrucks,例如$listOfTrucks->remove($remove). 您已经在使用对象,充分发挥它们的潜力!

于 2012-11-02T07:21:26.550 回答
1

您可以使用array_filter

<?php

$entry = array(
         0 => 'foo',
         1 => false,
         2 => -1,
         3 => null,
         4 => ''
      );

print_r(array_filter($entry));
?>

输出:

Array
(
[0] => foo
[2] => -1
)
于 2012-11-02T07:19:40.577 回答