我得到了一个多维数组$finalUserElearningLesson
。我想要做的是将它的键与另一个数组的键进行比较。if($finalUserElearningLesson[$i][$field] == $field)
实际上不是比较键,而是比较值。如何比较这些密钥?
for($i=0;$i<count($finalUserElearningLesson);$i++) {
$uFields = array();
foreach($fields as $field) {
if($finalUserElearningLesson[$i][$field] == $field){
$uFields[$field] = $finalUserElearningLesson[$i][$field];
}
}
fputcsv($output, $uFields);
}
发布于 2011-10-14 19:23:38
函数array_keys将为您的数组提供一个键的数组,这对您有帮助吗?
发布于 2011-10-14 19:37:52
如果我理解了你这一次要做什么,这可能更符合我的想法。对于$finalUserElearningLesson
中的每一行,它将输出该行和$fields
中都存在的字段(键)。
$fields = array('field1' => 'value1', 'field2' => 'value2', 'field4' => 'value4');
$fieldsKeys = array_keys($fields);
$finalUserElearningLesson[0] = array('field1' => 'value1',
'field2' => 'value2',
'field3' => 'value3');
$finalUserElearningLesson[1] = array('field2' => 'value2',
'field3' => 'value3');
$finalUserElearningLesson[2] = array('field1' => 'value1',
'field3' => 'value3',
'field4' => 'value4');
for($i=0;$i<count($finalUserElearningLesson);$i++) {
// annoyingly array_intersect_key() returns values, not keys
// get the keys in $finalUserElearningLesson[$i]
$lessonKeys = array_keys($finalUserElearningLesson[$i]);
// get the keys that exist in $finalUserElearningLesson[$i]
// and $fields
$keysInBoth = array_intersect($fieldsKeys, $lessonKeys);
echo "Keys in row $i: ", implode(',', $keysInBoth), "\n";
}
将输出:
Keys in row 0: field1,field2
Keys in row 1: field2
Keys in row 2: field1,field4
https://stackoverflow.com/questions/7772522
复制