我有一个数组是我在会话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;
}
嗯,它的工作方式 - 元素被删除了,但我的数组有一堆空的vaues。如何返回不包含null元素的数组?似乎我没有正确起诉。
答案 0 :(得分:3)
我认为你的意思是数组键不再连续。除非您将值设置为null
,否则数组在PHP中没有“空值”。
$array = array('foo', 'bar', 'baz');
// array(0 => 'foo', 1 => 'bar', 2 => 'baz');
unset($array[1]);
// array(0 => 'foo', 2 => 'baz');
两种方法:
foreach
循环遍历数组,而不是“手动”for
循环,然后按键是什么并不重要。array_values
重置密钥。此外,从列表中删除卡车应该是$listOfTrucks
的方法,例如$listOfTrucks->remove($remove)
。您已经在使用对象,充分发挥它们的潜力!
答案 1 :(得分: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
)