【发布时间】:2016-11-23 00:57:24
【问题描述】:
在函数中使用下面的代码时($floor 和 $lift 已传入,但我已在此处添加它们以进行演示)我在最后一个 return 语句中得到一个 Notice: Undefined offset: 20。
最后一个return 是本例中使用的平均值,但为什么我得到Notice: Undefined offset: 20?如果我没有记错(我显然是),array_key_exists() 函数应该可以防止这种情况发生吗?我也用isset() 尝试过,但没有成功。
$floor = 20;
$lift = false;
$moving = array(
"no_lift" => array(
1 => 0,
2 => 13,
3 => 17,
4 => 20
),
"lift" => array(
1 => 0,
2 => 10,
3 => 10,
4 => 20
)
);
switch ( $lift ) {
case true:
return ( isset( $moving["lift"][ $floor ] ) ? $moving["lift"][ $floor ] : $moving["lift"][ end( $moving["lift"] ) ] );
break;
case false:
return ( array_key_exists( $floor, $moving["no_lift"] ) ? $moving["no_lift"][ $floor ] : $moving["no_lift"][ end( $moving["no_lift"] ) ] );
break;
}
【问题讨论】:
-
end( $moving["no_lift"] )将是20。哪个不存在。 -
您试图通过键访问数组,但您实际上是在使用值!
-
也许您正在尝试使用 array_key_exists 来搜索值。您需要改用 array_search。
-
array_key_exists函数仅适用于关联数组。对于顺序数组,请使用count函数。
标签: php arrays array-key-exists