当 PHP array_key_exists 为 FALSE 时,为什么我不能添加键和值?

问题描述

我只是尝试将一组键和值添加到数组中,当且仅当它们不在数组中时。当它们不在数组中时,我需要添加 d1 到 d20,

这是我的代码

print_r($demos_keys)

Array
(
    [0] => d01
    [1] => firstname
    [2] => lastname
    [3] => email
    [4] => d02
    [5] => d03
    [6] => partnerid
)
$counter=0;
foreach ($csvdata as $row) {
    if ($counter > 0) {
    $rowdata_tmp = explode(',',trim($row));
    $rowdata_tmp['partnerid'] = $partnerid;
    $rowdata[] = array_combine($demos_keys,$rowdata_tmp);


//Fails to add 'd04'
        // if(isset($rowdata['d04'])){
        // $x=1;
        // } else {
            // $rowdata['d04']='';
        // }

//Fails to add 'd04'
        // if(isset($rowdata['d04'])){
        // $x=1;
        // } else {
            // $row['d04']='';
        // }
        
//Fails 
    if (array_key_exists('d04',$rowdata)==FALSE) {$rowdata['d04'] = '';}
    }

//Fails 
    if (array_key_exists('d04',$rowdata)==FALSE) {$row['d04'] = '';}
    }


    $counter = $counter + 1;
    
}

print_r($rowdata);

Array
(
    [0] => Array
        (
            [d01] => 1
            [firstname] => Fred
            [lastname] => Dryer
            [email] => FredDryer1@email.com
            [d02] => Backfield
            [d03] => north
            [partnerid] => 14
        )

我可以通过在 array_combine 语句之前插入 $rowdata_tmp['d04'] = '';添加 d04,但问题是d04 有时已经存在于 demos_keys 中。

有人可以帮忙吗?我要死在这里了。

解决方法

您正在检查顶级 $rowdata 数组中的键,而不是您添加到数组中的新行。

$rowdata_tmp = explode(',',trim($row));
$rowdata_tmp[] = $partnerid;
$new_row = array_combine($demos_keys,$rowdata_tmp);
if (isset($new_row['d04'])) {
    $x = 1;
} else {
    $new_row['d04'] = '';
}
$rowdata[] = $new_row;