我正在尝试使用此代码提取数组,但它会给出错误。但是,如果我从代码中删除while块而只给indice它有效。这是代码。
//This function gives error: Notice: Undefined offset: 1 in .......
//but if i delete while block and only write print $type[$i]; it works.
public function checkMimeType(){
echo '<pre>';
$i = 0;
$type = array();
foreach($this->_sourceFile as $key){
$type= $key['type'];
}
while($i <= count($type))
{
print $type[$i].'<br>';
$i++;
}
}
答案 0 :(得分:0)
计数不等于最后一个指数。
数组[x, y, z]
的计数为3
,但最后一个索引为2
。
因此,在您的while循环中,您不能在<= count
之前运行,而只能运行< count
。当$i
变为count
时,索引已经超出范围。
答案 1 :(得分:0)
在第一个循环中,您没有向数组添加值,而是每次都覆盖$type
变量。试试这个:
$type[] = $key['type'];
编辑:还有@thst所说的
答案 2 :(得分:0)
你经常循环一次;)
索引号从零开始。如果数组中有一个元素,则唯一定义的索引为0. count()
将返回1。
如果您循环“直到$i<= 1
,它将停在$i = 1
。没有ID为1的元素。
所以,请使用while($i < count($type))