代码之家  ›  专栏  ›  技术社区  ›  Orlando P. Emipro Technologies Pvt. Ltd.

仅当在数组A中未找到时才返回数组的键

  •  1
  • Orlando P. Emipro Technologies Pvt. Ltd.  · 技术社区  · 7 年前

    我有两个数组,一个是自定义的。

    $fields = array( "first_name" => "test", "last_name" => "Test", "phone" =>"111-111-1111, "id" => 1234");
    

    另一个是从csv文件的第一行抓取的。返回如下数组

    $headers = array ("fname" => "test", "last_name" => "Test", "phone"=> "123-123-1234");
    

    然后,如果$headers数组中有一个键与$fields数组中的任何键都不匹配,我想返回一个错误。如果$fields数组中的键不全部存在于$headers数组中,则可以。

    例如,上面的两个数组应该返回一个错误,因为键fname在$fields数组中不存在,但不是因为id在$headers数组中丢失。

    我试着用带有多个循环的if语句进行实验,但我正在寻找一种更好的方法,我认为我可以操作array\u diff方法,但没有成功。

    $dif_keys = array_diff($fields, $headers);
    
    2 回复  |  直到 7 年前
        1
  •  3
  •   Don't Panic    7 年前

    两件事:

    1. 如果你想检查一下 从…起 $headers 存在于 $fields 使用 array_diff_key 而不是 array_diff . 阵列差异 将仅比较值。

    2. $字段 有一些钥匙不在 $标题 ,你想把 $标题 第一

    因此,我认为您需要的代码是:

    $diff = array_diff_key($headers, $fields);
    

    你可以评估 $diff 作为布尔值。(例如。 if ($diff) {... )如果为空,它将计算为false,这意味着 $标题 在中有相应的键 $字段 .

        2
  •  2
  •   AbraCadaver    7 年前

    检查相交键的计数,并与 $headers

    if(count(array_intersect_key($headers, $fields)) == count($headers)) {
        echo 'Good';
    } else {
        echo 'Bad';
    }
    

    这是返回所有钥匙 $header 存在于 $fields 比较计数,应该是相同的。