为什么在PHP中使用foreach循环时字符串索引会转换为整数?
当我在关联数组中循环时,字符串索引将转换为整数 为什么会发生这种情况为什么在PHP中使用foreach循环时字符串索引会转换为整数?,php,associative-array,Php,Associative Array,当我在关联数组中循环时,字符串索引将转换为整数 为什么会发生这种情况 $day_of_the_week = array( "1" => 'Monday', "2" => 'Tuesday', "3" => 'Wednesday', "4" => 'Thursday', "5" => 'Friday', "6" => 'Saturday', "7" =
$day_of_the_week = array(
"1" => 'Monday',
"2" => 'Tuesday',
"3" => 'Wednesday',
"4" => 'Thursday',
"5" => 'Friday',
"6" => 'Saturday',
"7" => 'Sunday'
);
foreach($day_of_the_week as $index => $value){
echo "Index: $index<br />Type: " . gettype($index) . "<br />Value:$value<br /><br />";
}
这在使用strpos($haystack,$pineel)函数时会导致问题,因为$pineel参数:“被转换为整数并作为字符的序数值应用。”
一个简单的解决方案是将strval函数放入strpos函数中:
strpos($haystack,strval($needle))
这不是因为foreach循环。阅读有关阵列的文档。为什么还要在阵列上使用strpo?有数组函数,可以从值中查找密钥,反之亦然,如果您告诉我们您实际想要实现什么,我们可以给你一个更好的答案,不管怎样,只要键入它。@dagon在数据库中,所选的选项是这样存储的1 | 2 | 3 | 4,这样就可以循环表单元素并使用strpos搜索复选框值是否在所选值中。这是因为PHP是一种动态编程语言:
var\u dump('123'==123);
为真
strpos($haystack,strval($needle))