如何检查嵌套关联数组中是否已存在 2 个“组合”值


How to check whether 2 'combined' values already exist in a nested associative array

我有一个文本文件,我正在逐行读取和处理,我希望将结果变量(后处理)放入嵌套数组中,因此对于文本文件的每一行新索引,将在数组中创建一个新索引,并将 2 个值放入嵌套关联数组中 - 到目前为止一切顺利。

$arr = file('file.txt') or die('ERROR: Cannot find file');
$add_data = array(array('opc'=>$outward_pc,'lkey'=>$lkey));
$i=0;
foreach ($arr as $line) {
    $outward_pc = trim(substr($line,0,4));
    $lkey = trim(substr($line,15,6));
    $add_data[$i]['opc'] = $outward_pc;
    $add_data[$i]['lkey'] = $lkey;
    $i++;
}

但是,当我只想将这两个变量添加到嵌套数组中时,如果它们的组合值是唯一的,那么棘手的部分就来了例如,从下面的变量对中,我只想向数组添加 4 个新索引,因为组合"AB10"和"000002"、"AB10"和"000004"以及"AB21"和"000003"都出现不止一次

'AB10' and '000002'
'AB10' and '000002'
'AB10' and '000004'
'AB10' and '000004'
'AB21' and '000002'
'AB21' and '000003'
'AB21' and '000003'

我认为因为我正在处理一个嵌套(和关联)数组,所以网络上任何形式的文献都很难获得,尤其是在如何正确编写 !in_array 函数方面。到目前为止,我未能提出任何接近正确语法的东西。我(诚然很穷)四处乱窜,如下所示:

if (!in_array(array($outward_pc, $lkey), $add_data)) {
    $add_data[$i]['opc'] = $outward_pc;
    $add_data[$i]['lkey'] = $lkey;
}

任何帮助感激地收到!

为什么不创建两个值的串联并将其用作$add_data数组中的键。 这样,重复的值只会相互覆盖。

foreach ($arr as $line) {
    $outward_pc = trim(substr($line,0,4));
    $lkey = trim(substr($line,15,6));
    $key = $outward_pc . $lkey;
    $add_data[$key]['opc'] = $outward_pc;
    $add_data[$key]['lkey'] = $lkey;
}