Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/269.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么在PHP中使用foreach循环时字符串索引会转换为整数?_Php_Associative Array - Fatal编程技术网

为什么在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))