1

我有一个文本文件,我正在逐行读取和处理,我希望将结果变量(后处理)放入嵌套数组中,因此对于文本文件的每一行,都会在数组中创建一个新索引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;

}

任何帮助都感激不尽!

4

1 回答 1

2

为什么不创建两个值的串联并将其用作$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;
}
于 2013-01-24T16:12:27.103 回答