我有一些麻烦与一对数组和卡住。我能够阅读这两个,但不能弄清楚如何让第一个搜索第二个基于一个键和拉另一个键的值到第一个。这两个数组都有代码和描述。我需要使描述从下一个数组进入第一个代码是相同的。第一个数组中有多个代码的实例。
Array1 (
[0] => Array (
[state] => AK
[effdate] => 01/01/2012
[code] => 1
[description] => null
[enddate] => null
)
[1] => Array (
[state] => AK
[effdate] => 01/01/2012
[code] => 2
[description] => null
[enddate] => null
)
[2] => Array (
[state] => AK
[effdate] => 01/01/2012
[code] => 3
[description] => null
[enddate] => null
)
)
Array2 (
[0] => Array (
[code] => 1
[description] => some description
)
[1] => Array (
[code] => 2
[description] => some other description
)
[2] => Array (
[code] => 3
[description] => yet another description
)
)
同样,第一个数组是从MySQL表创建的,而第二个数组来自一个以制表符分隔的文本文件。最终结果将把文本文件中的描述写入MySQL表。下面是我必须在两个数组之间查找并将它们写入HTML表的代码。我能够检索第一个条目的描述,但没有其他内容。我知道它与$ I 在*$ncci_array[$ I]*中的if语句有关,但我不确定用什么来代替它。Array1 = *$rates_array* and Array2 = *$ncci_array*
echo '<table border="1"><tr><td>ID</td><td>State</td><td>Effective</td><td>Code</td><td>Description</td><td>End</td></tr>'."n";
if (($rates_array[$i]['state'] == 'AL'||'AK'||'AZ'||'AR'||'CO'||'CT'||'DC'||'FL'||'GA'||'HI'||'ID'||'IL'||'IA'||'KS'||'KY'||'LA'||'ME'||'MD'||'MS'||'MO'||'MT'||'NE'||'NV'||'NH'||'NM'||'OK'||'RI'||'SC'||'SD'||'TN'||'UT'||'VT'||'VA'||'WI') && ($rates_array[$i]['code'] == $ncci_array[$i]['code']))
{
$rates_array[$i]['description'] = strtolower($ncci_array[$i]['description']);
}else{
$rates_array[$i]['description'] = 'Description unavailable at this time';
}
for ($rates_row = 0; $rates_row < count($rates_array)-1; $rates_row++)
{
if ($rates_array[$i]['code'] == $rates_array[$i+1]['code'])
{
$rates_array[$i]['enddate'] = date('Y-m-d', strtotime('-1 day', strtotime($rates_array[$i+1]['effdate'])));
}else{
$rates_array[$i]['enddate'] = date('Y-m-d', strtotime('+1 year', strtotime($rates_array[$i]['effdate'])));
}
echo '<tr><td>'.$i.'</td><td>'.$rates_array[$i]['state'].'</td><td>'.$rates_array[$i]['effdate'].'</td><td>'.$rates_array[$i]['code'].'</td><td>'.$rates_array[$i]['description'].'</td><td>'.$rates_array[$i]['enddate'].'</td></tr>'."n";
$i++;
}
echo '</table>';
当前输出如下所示
| ID | State | Effective | Code | Description | End |
| 0 | AK | 01/01/2011 | 1 | Some description | 12/31/2011 |
| 1 | AK | 01/01/2012 | 1 | | 01/01/2013 |
| 2 | AK | 01/01/2012 | 2 | | 01/01/2013 |
| 3 | AK | 01/01/2012 | 3 | | 01/01/2013 |
谢谢你看一看!
遍历两个数组,检查两者之间是否匹配。(在问题编辑前发布)
foreach($rates_array as $key => $val){ // Array1 where description is null
foreach($ncci_array as $k => $v){ // Array2 where description is set
if($val['code'] == $v['code'])
$rates_array[$key]['description'] = $v['description'];
}
}
这将强制从Array2到Array1的描述值,从而给你一个数组在你的表中工作,以避免混淆。
你也不需要$i,因为你正在使用$rates_row作为你的循环计数器