我看过一些有关搜索数组的主题(可能不是全部),但似乎对我没有用。
我对数组不是很好,这可能是我问题的根源。
我正在从看起来像这样的数据动态创建数组:
姓名| 时间(仅带小时的日期)| Some-Other-Columns(此时我不在乎其他列,仅关心前两列)-以下仅是一个示例,数据看起来或多或少像这样:
Name1 | 05-01-01 04| other values
Name1 | 14-02-03 02| other values
Name1 | 14-02-03 02| other values
Name1 | 14-02-03 03| other values
Name2 | 13-09-09 07| other values
NameX...
如您所见,“名称+时间”的值并不唯一,这是问题的核心。对于“原因”,我需要这种方式。我可以为此步骤使用单独的查询来获取单独的不同值-但我想用自己的知识来解决它,并在此过程中学习。
因此,当我逐行处理数据时,我会调用:$ member_array [$ name] [] = $ time;
结果,我得到:
Array
(
[Name1] => Array
(
[0] => 14-04-26 17
[1] => 14-04-26 17
)
[Name2] => Array
(
[0] => 14-05-01 18
[1] => 14-05-01 19
[2] => 14-05-02 00
[3] => 14-05-02 00
[4] => 14-05-03 09
[5] => 14-05-03 13
[6] => 14-05-03 15
[7] => 14-05-03 15
)
)
我注意到值重复出现,所以我添加了数组搜索来检查$ member_array [$ name]数组中是否存在重复值:
if(array_search($time,$member_array[$name])===FALSE)
{
$member_array[$name][] = $time;
}
}
它实际上有效,但是随后我得到了:
警告:array_search()[function.array-search]:第43行的/home/bud-net/ftp/praca_dyplomowa/ale/members_time.php中第二个参数的数据类型错误
警告:array_search()[function.array-search]:第43行的/home/bud-net/ftp/praca_dyplomowa/ale/members_time.php中第二个参数的数据类型错误
Array
(
[Name1] => Array
(
[0] => 14-04-26 17
)
[Name2] => Array
(
[0] => 14-05-01 18
[1] => 14-05-01 19
[2] => 14-05-02 00
[3] => 14-05-03 09
[4] => 14-05-03 13
[5] => 14-05-03 15
)
)
因此,我假设当我第一次调用搜索一个新名称时(在将第一个值分配给$ member_array [Name1]并随后分配给$ member_array [Name2]之前),它还不是Array,因此PHP发出警告。现在,您可以看到结果是正确的-所有重复的值都未添加到Array中,但是我试图摆脱警告。我应该如何初始化Array变量以摆脱它?
您是对的,在第一个调用期间该数组不存在。因此,您必须检查数组是否存在,如果不存在则创建它。
if(!isset($member_array[$name])) { //if the array doesn't exist create it
$member_array[$name] = array($time);
}
elseif(array_search($time,$member_array[$name])===FALSE) { //if the array does exist search it
$member_array[$name][] = $time;
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句