2011-05-10 43 views
4

我有两个数组:PHP array_keys - 我做错了什么?

$字段名:

array(
[0] => array(
    ['fieldName'] =>'id' 
    ['fieldType'] => 'int(11)' 
    ) 
[1] => 
    ['fieldName'] =>'adminID' 
    ['fieldType'] =>'int(11)' 
    ) 
[2] =>array(
    ['fieldName'] =>'schoolID' 
    ['fieldType'] =>'int(11)' 
    ) 
[3] => array(
    ['fieldName'] =>'lessonPlanName' 
    ['fieldType'] =>'varchar(255)' 
    ) 
[4] =>array(
    ['fieldName'] =>'lessonPlanAssignmentDate' 
    ['fieldType'] =>'varchar(255)' 
    ) 
[5] =>array(
    ['fieldName'] =>'lessonPlanDueDate' 
    ['fieldType'] =>'varchar(255)' 
    ) 
[6] =>array(
    ['fieldName'] =>'lessonPlanTopics' 
    ['fieldType'] =>'varchar(255)' 
    ) 
[7] =>array(
    ['fieldName'] =>'lessonPlanDescription' 
    ['fieldType'] =>'text' 
    ) 
[8] =>array(
    ['fieldName'] =>'lessonPlanNotes' 
    ['fieldType'] =>'text' 
    ) 
) 

$ formElementPairs:

array(
    ['lessonPlanName'] =>'Test' 
    ['lessonPlanAssignedDate'] =>'05/11/2011' 
    ['lessonPlanDueDate'] =>'05/11/2011' 
    ['lessonPlanTopics'] => 1 
    ['lessonPlanDescription'] =>'test' 

我想请检查阵列2是缺少任何数组1中'fieldName'键的值,然后使用空条目将它们添加到数组2中。下面的代码的工作原理是,我从第一个数组(id,adminId,schoolId等)获取“fieldName”值,但是当我使用array_keys检查第二个数组时,我的结果数组始终有一个数0.还应该提到我在这个项目上使用PHP4卡住了。

//merge arrays 
for($fn=0; $fn<count($fieldNames); $fn++) { 
    $thisFieldName = $fieldNames[$fn]['fieldName']; 
    $fieldCheckArray = array_keys($formElementPairs, $thisFieldName); 
    //$firephp->fb(count($fieldCheckArray)); 
} 

我误解array_keys和/或是否有一个更优雅的方式来做到这一点在PHP4?

感谢

回答

1

可以使用array_key_exists检查阵列2是缺少什么: array_key_exists

$missing = array(); 
for($fn=0; $fn<count($fieldNames); $fn++) { 
    $thisFieldName = $fieldNames[$fn]['fieldName']; 
    if(!array_key_exists($thisFieldName, $formElementPairs)) { 
     $missing[] = $thisFieldName; 
    } 
} 
//do something with $missing 
+0

我会尝试,但任何想法为什么array_keys不会按照我使用它的方式工作? – PruitIgoe 2011-05-10 18:33:16

+0

@pruitigoe'array_keys'返回为传递的**值**找到的键的数组。查看[文档](http://php.net/manual/en/function.array-keys.php) – 2011-05-10 18:50:40

1

的第二个参数array_keys试图匹配而不是$formElementPairs

+0

看看这个例子(第二个)在w3schools:
<?php $ a = array(“a “=>” 马”, “b”=> “猫”, “C”=> “狗”); print_r(array_keys($ a,“Dog”)); ?>
http://www.w3schools.com/php/func_array_keys.asp – PruitIgoe 2011-05-11 13:59:58

+0

看看这个例子(第二个)在w3schools:'<?php $ a = array(“a”=>“Horse”, “b”=> “猫”, “C”=> “狗”); print_r(array_keys($ a,“Dog”)); ?>结果将是Array([0] => c)通过检查一个键的值是不是获得匹配结果? [w3school](http://www.w3schools.com/php/func_array_keys.asp) – PruitIgoe 2011-05-11 14:06:30