我有一个名为$mas
的数组。我可以取消设置数组的最后7个元素,但是当我尝试取消设置前3个元素时,我会收到错误:
注意:未定义的偏移量:0
以下是我的代码中的几行:
$ilgis = count($mas);
unset($mas[$ilgis-1], $mas[$ilgis-2], $mas[$ilgis-3], $mas[$ilgis-4], $mas[$ilgis-5], $mas[$ilgis-6], $mas[$ilgis-7]);
这段代码不起作用:
...
unset($mas[0], $mas[1], $mas[2]);
看起来他们甚至不存在于这个阵列中。任何想法如何解决它?
顺便说一下,echo $mas[0];
效果很好。
var_dump($ mas)输出:
array (size=9)
0 => string 'Paris-Orly - Stockholm-Arlanda' (length=30)
1 => string 'Tuesday 25. Mar 2014 21:15 - Terminal: S' (length=41)
2 => string 'Flight DY4314 - LowFare' (length=26)
3 => string 'Stockholm-Arlanda - Copenhagen' (length=30)
4 => string 'Wednesday 26. Mar 2014 07:00 - Terminal: 5' (length=43)
5 => string 'Flight DY4151 - LowFare' (length=26)
6 => string '1 Adult' (length=7)
7 => string '1 Child (2-11)' (length=14)
8 => string '1 Infant' (length=8)
答案 0 :(得分:4)
您可以选择所需的值,而不是取消您不需要的值。为此目的使用array_slice()
。此解决方案优于unset()
的优点是您不必指定索引。
$mas = array(
'Paris-Orly - Stockholm-Arlanda',
'Tuesday 25. Mar 2014 21:15 - Terminal: S',
'Flight DY4314 - LowFare',
'Stockholm-Arlanda - Copenhagen',
'Wednesday 26. Mar 2014 07:00 - Terminal: 5',
'Flight DY4151 - LowFare',
'1 Adult',
'1 Child (2-11)',
'1 Infant'
);
$output = array_slice($mas, 3);
print_r($output);
输出:
Array
(
[0] => Stockholm-Arlanda - Copenhagen
[1] => Wednesday 26. Mar 2014 07:00 - Terminal: 5
[2] => Flight DY4151 - LowFare
[3] => 1 Adult
[4] => 1 Child (2-11)
[5] => 1 Infant
)
答案 1 :(得分:1)
或者你可以使用array_shift,它取第一个元素并将其从数组中删除,在关联数组的情况下并不重要:
array_shift($mas) ;
array_shift($mas) ;
array_shift($mas) ;
答案 2 :(得分:1)
unset()对我来说很好用:
$mas = array(
0 => 'Paris-Orly - Stockholm-Arlanda',
1 => 'Tuesday 25. Mar 2014 21:15 - Terminal: S',
2 => 'Flight DY4314 - LowFare' ,
3 => 'Stockholm-Arlanda - Copenhagen',
4 => 'Wednesday 26. Mar 2014 07:00 - Terminal: 5',
5 => 'Flight DY4151 - LowFare' ,
6 => '1 Adult' ,
7 => '1 Child (2-11)' ,
8 => '1 Infant' );
unset($mas[0], $mas[1], $mas[2]);
var_dump(array_values($mas));
<强> Demo 强>
但它保留了密钥,因此您可能在尝试取消设置后访问索引0
。这会引发undefined offset
错误,您需要重新索引数组。上面的示例使用array_values()
来执行相同的操作。
答案 3 :(得分:0)
前三个元素很可能拥有非数字键。
指数0,1和2甚至可能不存在。
检查此代码:
for ( $i = 0 ; $i < 3 ; $i++ ) {
foreach ( $mas AS $key => $value ) {
unset( $mas[$key] );
break;
}
reset($mas);
}