我在这里遇到了一个问题。
$arr = array ('1' => 'one');
var_dump(current(array_keys($arr)));
// prints: int(1)
// should print: string(1) "1"
我正在尝试创建一个关联数组,但 PHP 正在将我的字符串转换为我身上的整数。
我正在为一系列 <input type="radio"> 按钮生成标记,并将选中的属性应用于其值与 POST 请求中的值匹配的属性,例如
$selected = isset($_POST[$this->name]) ? $_POST[$this->name] : null;
foreach ($this->options as $value => $label) {
$html .= "<input type=\"radio\" name=\"{$this->name}\" value=\"$value\"".
($_POST[$this->name] === $value ? ' checked' : '').'>';
}
我可以只使用两个等号而不是类型比较;但是,如果数组是:
$this->options = array (
'0' => 'No',
'1' => 'Yes'
);
即使未设置 POST 值,它也会选择 0 选项。但是,它不应该选择任何单选按钮,因为它们都没有 null 值。
编辑:刚刚发现:“包含有效整数的字符串将被转换为整数类型。例如,键“8”实际上将存储在 8 下。另一方面,“08”不会被转换,因为它不是有效的十进制整数。” 在 PHP 手册中。认为无论如何都会绕过它?