Php 数组\搜索未找到字符串?
其输出为: _IGTestScore 如果我对$className和$student['''u IGClass1]进行var_转储,我会得到: 弦乐(22)“B班:周三下午6点” 弦乐(22)“B班:周三下午6点” array_search以前从未遇到过问题,但这让我抓狂,似乎无法理解这里发生了什么。似乎任何字符串搜索结果都是一样的。但如果我搜索一个整数,比如3,它会正确地提取“Id” 更新-整个多维数组Php 数组\搜索未找到字符串?,php,arrays,Php,Arrays,其输出为: _IGTestScore 如果我对$className和$student['''u IGClass1]进行var_转储,我会得到: 弦乐(22)“B班:周三下午6点” 弦乐(22)“B班:周三下午6点” array_search以前从未遇到过问题,但这让我抓狂,似乎无法理解这里发生了什么。似乎任何字符串搜索结果都是一样的。但如果我搜索一个整数,比如3,它会正确地提取“Id” 更新-整个多维数组 我发现了问题。。。但我不知道原因:对我来说,这是一个谜 问题是\u IGTestScore
我发现了问题。。。但我不知道原因:对我来说,这是一个谜 问题是
\u IGTestScore
作为整数:如果\u IGTestScore
是整数,array\u search()
返回\u IGTestScore
(事实上,它返回任何搜索字符串的\u IGTestScore
,即使它们不存在!),如果\u IGTestScore
设置为'0'
(字符串)或为正整数,array\u search()
返回正确的值
是虫子吗
有人能解释一下吗
编辑:
显然,有一个解决方案:使用“strict”参数:
Array
(
[0] => Array
(
[Groups] => 187,267
[Birthday] => DateTime Object
(
[date] => 1981-02-04 00:00:00.000000
[timezone_type] => 3
[timezone] => UTC
)
[_IGTestScore] => 0
[Email] => blank@blank.com
[_IGClass1] => Class B: Wednesday 6pm
[_IGAttendedClass1] => DateTime Object
(
[date] => 2016-02-17 00:00:00.000000
[timezone_type] => 3
[timezone] => UTC
)
[FirstName] => Joe
[Id] => 3
[LastName] => Schmoe
)
)
但是。。。为什么“B类:星期三下午6点”==0?数组中的
B类:星期三下午6点
值可能最后有一个空格,如下所示:B类:星期三下午6点
。这可能就是问题所在。@Nordenheim-我展示了var_转储,以表明它们都是相同的。它对我来说是正确的(已测试)。确保其中一个子数组的格式没有错误?每个子数组的结果都相同?@fusion3k-我可以将指针更改为其他字符串值(如Joe,blank@blank.com)但结果是一样的。任何字符串元素(FirstName、Email等)都将返回为“_IGTestScore”。我可以单独访问元素fine,例如$student[''u IGClass1'],该值返回fine。此外,您必须var\u dump($student[''u IGTestScore'])
,而不是\u IGClass1
。。。ッStrict对我来说很管用,但我仍然很困惑,为什么它会不顾一切地这样做。
Array
(
[0] => Array
(
[Groups] => 187,267
[Birthday] => DateTime Object
(
[date] => 1981-02-04 00:00:00.000000
[timezone_type] => 3
[timezone] => UTC
)
[_IGTestScore] => 0
[Email] => blank@blank.com
[_IGClass1] => Class B: Wednesday 6pm
[_IGAttendedClass1] => DateTime Object
(
[date] => 2016-02-17 00:00:00.000000
[timezone_type] => 3
[timezone] => UTC
)
[FirstName] => Joe
[Id] => 3
[LastName] => Schmoe
)
)
array_search( $className, $student, True );