Php 检查数组中是否有返回错误的内容

Php 检查数组中是否有返回错误的内容,php,arrays,Php,Arrays,我有一个数组,我生成了一个可能存在于数组中的随机数,我试图看看这个随机数是否在数组中。如果它存在于数组中,它将给用户一个特定的项目,如果它不在数组中,我希望它什么也不做。我在一个演示页面上写下了这一切来测试它,当随机数不在数组中时,我不断地得到一个错误。我是否正在检查数组中的#是否正确?我一辈子都想不出来 如果你需要更多信息,请告诉我 错误: Notice: Undefined offset: 10 in C:\xampp1\htdocs\hvp\battlemasters\play\text.

我有一个数组,我生成了一个可能存在于数组中的随机数,我试图看看这个随机数是否在数组中。如果它存在于数组中,它将给用户一个特定的项目,如果它不在数组中,我希望它什么也不做。我在一个演示页面上写下了这一切来测试它,当随机数不在数组中时,我不断地得到一个错误。我是否正在检查数组中的#是否正确?我一辈子都想不出来

如果你需要更多信息,请告诉我

错误:

Notice: Undefined offset: 10 in C:\xampp1\htdocs\hvp\battlemasters\play\text.php on line 17
代码:

编辑 现在,对于$敌方物品=$r1['items'],我刚刚在数据库中添加了1个物品供敌方测试,物品是7

MySQL资料:

CREATE TABLE IF NOT EXISTS `enemies` (
`id` int(255) NOT NULL,
`name` varchar(255) NOT NULL,
`type` varchar(255) NOT NULL,
`icon` varchar(255) NOT NULL,
`items` varchar(255) NOT NULL
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=94 ;

INSERT INTO `enemies` (`id`, `name`, `type`, `icon`, `items`) VALUES (1, 'Dragon', 'Dragon', 'images/enemies/Dragon_1_1.png', '7');
修改最后一个条件:

// Check If $random Exists In Array
if (isset($items_list[$random])) {
    // Item Exists So Lets Give The Item To The User

}
修改最后一个条件:

// Check If $random Exists In Array
if (isset($items_list[$random])) {
    // Item Exists So Lets Give The Item To The User

}
很简单:

if (in_array($random, $items_list))
很简单:

if (in_array($random, $items_list))
如果要检查$items\u列表数组中是否存在
$random
,只需检查$random是否存在,而不检查random的索引是否存在

此外,此处不需要foreach,
explode
已返回数组,因此字符串
“1 | 7 | 8 | 10 | 11”
将自动转换为数组

编辑:

澄清:

通过检查$items_list[$random]是否存在,您实际上是在请求数组:

“数组中是否存在键$random?”,这最终可能是真的,因为数组是
[1,7,8,10,11]
,但实际上只是这样:

array(
0 => 1,
1 => 7,
2 => 8,
3 => 10,
4 => 11
);
因此,如果出于某些原因$random为3,则if将计算为TRUE,尽管数组中确实没有值为3,但有一个键为3

小心点

编辑2:

修复不需要的==TRUE

编辑3:

深入:

既然你看起来很困惑,我就给你举个简单的例子

场景1:

in_array($items_list[$random], $items_list)
in_array($random, $items_list)
假设数组是上面的数组:

array(
0 => 1,
1 => 7,
2 => 8,
3 => 10,
4 => 11
);
有两种情况:

答:
$random
为0[不可能],1,2,3,4

B:
$random
是任何其他数字

案例A:

如果$random为2,则if将如下进行:

首先,它将检查是否设置了键2,因此,您的if可以解释为:

if (in_array($items_list[2], $items_list))
但是,由于键2存在,因此它实际上与此对应:

in_array(8, $items_list)
因为$items\u列表数组的2存在,并且值为8(检查上面的数组)

在这一点上,if类似于:“那么,在$items\u list数组中有没有8的值?”答案是真的,因此if将计算,尽管数组中没有2的值

案例B:

让我们假设$random是10(这是当前的最大值)

PHP将像以前一样尝试查找对应键的值,但是,数组也可以通过以下方式查看:

array(
0 => 1,
1 => 7,
2 => 8,
3 => 10,
4 => 11,
5 => null,
[...]
10 => null
);
因此,由于键10没有值,php会通知您“嘿,先生,键10没有值,因为它没有设置。”,也称为:
undefined offset:10

场景2:

in_array($items_list[$random], $items_list)
in_array($random, $items_list)
在这种情况下,$random可以在这个宇宙中有任何值,In_数组将始终返回true或false,因为它只会检查数组中是否存在该值。 (你可以在这篇文章的开头找到关于这一点的进一步解释)

希望这有帮助

如果要检查$items\u列表数组中是否存在
$random
,只需检查$random是否存在,而不检查random的索引是否存在

此外,此处不需要foreach,
explode
已返回数组,因此字符串
“1 | 7 | 8 | 10 | 11”
将自动转换为数组

编辑:

澄清:

通过检查$items_list[$random]是否存在,您实际上是在请求数组:

“数组中是否存在键$random?”,这最终可能是真的,因为数组是
[1,7,8,10,11]
,但实际上只是这样:

array(
0 => 1,
1 => 7,
2 => 8,
3 => 10,
4 => 11
);
因此,如果出于某些原因$random为3,则if将计算为TRUE,尽管数组中确实没有值为3,但有一个键为3

小心点

编辑2:

修复不需要的==TRUE

编辑3:

深入:

既然你看起来很困惑,我就给你举个简单的例子

场景1:

in_array($items_list[$random], $items_list)
in_array($random, $items_list)
假设数组是上面的数组:

array(
0 => 1,
1 => 7,
2 => 8,
3 => 10,
4 => 11
);
有两种情况:

答:
$random
为0[不可能],1,2,3,4

B:
$random
是任何其他数字

案例A:

如果$random为2,则if将如下进行:

首先,它将检查是否设置了键2,因此,您的if可以解释为:

if (in_array($items_list[2], $items_list))
但是,由于键2存在,因此它实际上与此对应:

in_array(8, $items_list)
因为$items\u列表数组的2存在,并且值为8(检查上面的数组)

在这一点上,if类似于:“那么,在$items\u list数组中有没有8的值?”答案是真的,因此if将计算,尽管数组中没有2的值

案例B:

让我们假设$random是10(这是当前的最大值)

PHP将像以前一样尝试查找对应键的值,但是,数组也可以通过以下方式查看:

array(
0 => 1,
1 => 7,
2 => 8,
3 => 10,
4 => 11,
5 => null,
[...]
10 => null
);
因此,由于键10没有值,php会通知您“嘿,先生,键10没有值,因为它没有设置。”,也称为:
undefined offset:10

场景2:

in_array($items_list[$random], $items_list)
in_array($random, $items_list)
在这种情况下,$random可以在这个宇宙中有任何值,In_数组将始终返回true或false,因为它只会检查数组中是否存在该值。 (你可以找到一个