数组检查未定义的偏移量php

Posted

技术标签:

【中文标题】数组检查未定义的偏移量php【英文标题】:Array check undefined offset php 【发布时间】:2017-08-19 13:22:21 【问题描述】:

我会试着解释一下。

我有一个array

 $arrayTime = array(0=>"07",1=>"09", 3=>"13", 4=>"15", 5=>"17", 6=>"19");

这里可以看到没有定义offset 2 现在我需要for 我的arrayoffset 2 推数字0(例如) 我试过用这个:

if($arrayTime[$i]=="")
   $arrayTime[$i]=0;

是的,它可以工作,但 50 到 50 array 看起来像这样:

$arrayTime = array(0=>"07",1=>"09", 3=>"13", 4=>"15", 5=>"17", 6=>"19",2=>"0");

但在 if 所在的行上会引发错误:

注意:未定义的偏移量:C:\wamp\www\xxx.php 第 10 行中的 2

所以我需要相同的结果,但没有错误。 谢谢大家的帮助:)

【问题讨论】:

它不会抛出错误,它会注意到您正在尝试访问未定义的索引,并警告您代码中可能存在错误。通常这是在一个包中,你试图编写一些“不好的做法”的脚本。你试图解决它的事实是。而不是$arrayTime[$i]==""empty($arrayTime[$i]) 非常感谢您,如果您想指出,请回答我的问题。我会把它标记为正确的。 【参考方案1】:

首先,它不会抛出错误。它会警告您代码中可能存在的错误。

if($arrayTime[$i]=="")

这会尝试访问 $arrayTime[$i] 以检索一个值以与您的空字符串进行比较。

读取 使用 不存在的数组索引 来获取比较值的尝试是它抛出警告的原因通常是出乎意料的。当密钥不存在时,使用null,代码继续执行。

if(null == "") // this evaluates to true.

因为您要与空字符串"" 进行比较,所以您的答案将是empty()

if(empty($arrayTime[$i]))

这意味着您希望密钥不存在,同时您正在检查 是否为空。请参阅type comparison table,了解哪些是“空”,哪些不是“空”。

同样的规则适用于isset()is_null(),如果密钥不存在则不会抛出通知。因此,请选择最能满足您需求的功能。

请记住,通过使用这些函数中的任何一个,您都在检查 valuenot(如果 key 存在于数组中)。你可以使用array_key_exists()

if(array_key_exists($i, $arrayTime))

【讨论】:

Oukey,非常感谢您的帮助和宝贵的信息! :)【参考方案2】:

要在未收到通知的情况下向未定义的索引添加零,您应该评估要比较的所需索引是否存在,因此不要直接比较,而是先尝试使用 isset 方法检查索引是否存在,检查是否变量已定义且不为 NULL。

所以你要验证的代码应该是这样的:

    //check for the index before tryin' to acces it
    if( !isset($arrayTime[$i]) )
       $arrayTime[$i]=0;
    

希望它对你有用。

【讨论】:

现在除了出现不存在时,不会运行代码添加出现! isset()undefinednull 有效。由于 OP 正在与 "" 进行比较,isset() 将返回 true,而有效答案将是 !isset()empty(),其中 empty()what 为空时更具动态性。 @Xorifelse isset 检查索引是否未定义,并且在您的示例中索引 2 没有,因此 isset 应该返回 true 并用零值填充索引 2 @Xorifelse 好吧,您的问题需要检查未定义的索引以将它们全部填充为 0,而不是精确地检查填充有 "" 的索引,因此无需进行 =="" 验证,但如果问题现在是通过检查未定义的索引和"" 填充的索引,它应该。 @Xorifelse if( empty($arrayTime[$i]) ) $arrayTime[$i]=0; 将用错误值替换已定义的索引,而不仅仅是未定义为 !isset()

以上是关于数组检查未定义的偏移量php的主要内容,如果未能解决你的问题,请参考以下文章

“注意:未定义的变量”、“注意:未定义的索引”、“警告:未定义的数组键”和“注意:未定义的偏移量”使用 PHP

“注意:未定义的变量”、“注意:未定义的索引”、“警告:未定义的数组键”和“注意:未定义的偏移量”使用 PHP

数组的问题:注意:未定义的偏移量:0

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP

“注意:未定义的变量”、“注意:未定义的索引”和“注意:未定义的偏移量”使用 PHP