【问题标题】:PHP array_keys - what am I doing wrong?PHP array_keys - 我做错了什么?
【发布时间】:2011-05-10 18:23:29
【问题描述】:

我有两个数组:

$fieldNames:

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 中是否有更优雅的方法来做到这一点?

谢谢

【问题讨论】:

    标签: php arrays key


    【解决方案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
    

    【讨论】:

    • 我会试试看,但知道为什么 array_keys 不能像我使用它那样工作吗?
    • @pruitigoe array_keys 返回为传递的 value 找到的键数组。见Docs
    【解决方案2】:

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

    【讨论】:

    • 在 w3schools 看这个例子(第二个):
      "Horse","b"=>"Cat","c "=>"狗"); print_r(array_keys($a,"Dog")); ?>
      w3schools.com/php/func_array_keys.asp
    • 看这个例子(第二个)在 w3schools:&lt;?php $a=array("a"=&gt;"Horse","b"=&gt;"Cat","c"=&gt;"Dog"); print_r(array_keys($a,"Dog")); ?&gt;结果会是 Array ( [0] => c) 不就是通过检查一个键的值得到一个匹配的结果吗? w3school
    猜你喜欢
    • 2011-11-03
    • 2010-10-23
    • 1970-01-01
    • 2011-06-01
    • 1970-01-01
    • 2015-10-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多