我知道未定义的偏移量会发出警告而不是错误,但是我想知道是否有任何可能的方法来避免这种警告弹出?我打算编写一个函数来测试未定义的偏移量,因为我认为编写多个类似的if-else
条件来测试偏移量可能会做很多工作。
function testOffset($item){
if(isset($item)){
return $item;
}else{
return "Nothing here!";
}
}
$array1[] = "Hello!";
echo testOffset($array1[1]);
在这种情况下,该功能运行良好,但是当我将unset元素分配给功能时,警告也会弹出。无论如何要解决吗?
答案 0 :(得分:4)
您可以尝试这样的功能
function issetOr($arr, $key)
{
if (isset($arr[$key])) {
return $arr[$key];
} else {
return "Nothing here!";
}
}
$array1[] = "Hello!";
echo issetOr($array1, 1);
或者如果您不想检查密钥是否存在,请使用
function issetOr($arr, $key)
{
if (\array_key_exists($key, $arr)) {
return $arr[$key];
} else {
return "Nothing here!";
}
}
$array1[] = "Hello!";
echo issetOr($array1, 1);
答案 1 :(得分:3)
有多种方法可以解决此问题,但是根据您要执行的操作,您可以执行以下操作:
foreach($array as $key => $val) {}
如果您只是想根据密钥获得1个元素,则应该使用array_key_exists:
$array1[] = "Hello!";
echo (array_key_exists(1, $array1)) ? $array[1] : "No key";
答案 2 :(得分:2)
如果您使用的是PHP 7+,则可以使用null coalesce将整个过程变成一个衬套...
public class Startup {
public static void main(String[] args) {
List<Foo> foos = new ArrayList<>();
// 1) Does not compile
foos.forEach(Startup::doSomething1.andThen(Startup::doSomething2));
Consumer<Foo> doSomething1 = Startup::doSomething1;
Consumer<Foo> doSomething2 = Startup::doSomething2;
// 2) Works as expected
foos.forEach(doSomething1.andThen(doSomething2));
}
public static void doSomething1(Foo foo) {
}
public static void doSomething2(Foo foo) {
}
public static class Foo {
}
}
答案 3 :(得分:1)
对于php中的转义警告和通知,您可以仅使用@
function testOffset($item){
if(isset($item)){
return $item;
}else{
return "Nothing here!";
}
}
$array1[] = "Hello!";
echo @testOffset($array1[1]);
答案 4 :(得分:0)
因为使用的偏移量1不存在,所以
您可以使用以下代码进行简单的代码修复:
function testOffset($item){
if(isset($item)){
return $item;
}else{
return "Nothing here!";
}
}
$array1[] = "Hello!";
echo testOffset($array1[0]);
答案 5 :(得分:-2)
您可以通过php array_values内置函数来处理此问题:
a:before {
content: "\f055";
font-family: FontAwesome;
left:0;
position:absolute;
top:0;
}
这将重新排列您的数组索引 例如 你有一个像这样的数组:
$yourArray = array_values($yourArray);
使用array_values后
$a[0] = '...'
$a[4] = '...'
$a[7] = '...'
$a[8] = '...'
$a[9] = '...'