php - 密钥存在时如何解决“未定义索引”错误?
问题描述
当我操作数组时,“foreach”循环会导致“未定义索引”错误。
该数组是从 MS Excel 生成的,可以与 PHP 数组函数一起正常工作。当我使用“foreach”循环提取数据时,我得到“未定义索引”错误,但是当我转储索引的值时,我得到了想要的结果。
代码摘录如下:
foreach ($membership_data as $data){
//dd($data["Gender"]);
if($data["Gender"]=='Male') {
$males_dates_of_birth[] = $data['DateofBirth'];
} elseif ($data["Gender"]=='Female'){
$females_dates_of_birth[] = $data['DateofBirth'];
} else {
$erroneous_gender_dates_of_birth[] = $data['DateofBirth'];
}
}
如何解决?
或者,是否有更好的方法来获取包含不同性别出生日期的三个数组?示例数据数组如下。
array:100 [▼
6 => array:15 [▼
"MemberNumber" => "48490"
"Surname" => "Wuckert"
"FirstName" => "Clement"
"OtherNames" => "Dr. Monique Murazik II"
"DateofBirth" => "1968-08-4"
"DateEmployed" => "1988-08-04"
"DateJoinedScheme" => "1968-08-4"
"Gender" => "Female"
"DocumentType" => "National ID"
"DocumentNumber" => "a370523307a"
"KRAPIN" => "a459831176c"
"NSSFNumber" => "a526026924k"
"TelephoneNumber" => "722136702"
"EmailAddress" => "annie99@yahoo.com"
"TelephoneNumberCountry" => "Kenya"
]
7 => array:15 [▶]
8 => array:15 [▶]
9 => array:15 [▶]
10 => array:15 [▶]
11 => array:14 [▶]
解决方案
您需要检查密钥是否存在于数组中或未使用array_key_exists
if(array_key_exists('Gender', $data) && $data["Gender"]=='Male') {
$males_dates_of_birth[] = array_key_exists('DateofBirth', $data) ? $data['DateofBirth'] : '';
} elseif (array_key_exists('Gender', $data) && $data["Gender"]=='Female'){
$females_dates_of_birth[] = array_key_exists('DateofBirth', $data) ? $data['DateofBirth'] : '';
} else {
$erroneous_gender_dates_of_birth[] = array_key_exists('DateofBirth', $data) ? $data['DateofBirth'] : '';
}
推荐阅读
- laravel - 多对多数据透视表上的自定义范围
- flutter - 断言失败:第 19 行第 16 行:'纬度!= null':不正确。颤振错误
- javascript - 我可以用更新的 Object.fromEntries(new FormData(form)) 替换表单元素循环解析吗?
- sql-server - SQL Server:连接到服务器时出现错误 26
- linux - 如何仅在脚本完成后获取多个命令的执行时间?
- laravel - 使用 groupBy 从 mySQL 获取数据时 Laravel 错误
- node.js - AWS 弹性 beanstalk 上的默认代理配置将请求转发到的 Web 应用程序的端口号是多少?
- python - Python函数接受一个字符串,但不是当它在一个变量中
- reactjs - 如何在反应中反序列化ArrayObject的数据
- ubuntu - Rust Ubuntu 20.04.1 安装问题