Php 如何从多维数组中删除不必要的行?

Php 如何从多维数组中删除不必要的行?,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有这样的指纹记录 "OUR COMPANY";"100";"100";07/25/2017 5:02:57 PM;"Check Out";"1";"";0;"Fingerpint";"" "OUR COMPANY";"102";"102";07/25/2017 7:45:53 AM;"Check In";"1";"";0;"Fingerpint";"" "OUR COMPANY";"102";"102";07/25/2017 7:45:54 AM;"Check In";"1";"";0;"Fi

我有这样的指纹记录

"OUR COMPANY";"100";"100";07/25/2017 5:02:57 PM;"Check Out";"1";"";0;"Fingerpint";""
"OUR COMPANY";"102";"102";07/25/2017 7:45:53 AM;"Check In";"1";"";0;"Fingerpint";""
"OUR COMPANY";"102";"102";07/25/2017 7:45:54 AM;"Check In";"1";"";0;"Fingerpint";""
"OUR COMPANY";"102";"102";07/25/2017 6:01:34 PM;"Check Out";"1";"";0;"Fingerpint";""
"OUR COMPANY";"102";"102";07/25/2017 6:01:35 PM;"Check Out";"1";"";0;"Fingerpint";""
"OUR COMPANY";"104";"104";07/25/2017 8:00:06 AM;"Check Out";"1";"";0;"Fingerpint";""
"OUR COMPANY";"104";"104";07/25/2017 5:35:19 PM;"Check In";"1";"";0;"Fingerpint";""
"OUR COMPANY";"105";"105";07/25/2017 8:47:37 AM;"Check In";"1";"";0;"Fingerpint";""
"OUR COMPANY";"108";"108";07/25/2017 8:45:42 AM;"Check In";"1";"";0;"Fingerpint";""
"OUR COMPANY";"108";"108";07/25/2017 6:04:00 PM;"Check Out";"1";"";0;"Fingerpint";""
"OUR COMPANY";"11";"11";07/25/2017 8:57:34 AM;"Check In";"1";"";0;"Fingerpint";""
"OUR COMPANY";"11";"11";07/25/2017 5:12:06 PM;"Check Out";"1";"";0;"Fingerpint";""
"OUR COMPANY";"112";"112";07/25/2017 8:43:56 AM;"Check In";"1";"";0;"Password";""
"OUR COMPANY";"112";"112";07/25/2017 5:39:26 PM;"Check Out";"1";"";0;"Password";""
"OUR COMPANY";"112";"112";07/25/2017 5:41:17 PM;"Check Out";"1";"";0;"Password";""
格式:

Array
(
    [0] => Array
        (
            [0] => "OUR COMPANY"
            [1] => "100"
            [2] => "100"
            [3] => 07/25/2017 5:02:57 PM
            [4] => "Check Out"
            [5] => "1"
            [6] => ""
            [7] => 0
            [8] => "Fingerpint"
            [9] => ""
        )

    [1] => Array
        (
            [0] => "OUR COMPANY"
            [1] => "102"
            [2] => "102"
            [3] => 07/25/2017 7:45:53 AM
            [4] => "Check In"
            [5] => "1"
            [6] => ""
            [7] => 0
            [8] => "Fingerpint"
            [9] => ""
        )

    [2] => Array
        (
            [0] => "OUR COMPANY"
            [1] => "102"
            [2] => "102"
            [3] => 07/25/2017 7:45:54 AM
            [4] => "Check In"
            [5] => "1"
            [6] => ""
            [7] => 0
            [8] => "Fingerpint"
            [9] => ""
        )
    ...
)
我只想得到每次入住和退房的第一条记录。该记录包含多个条目,每个ID(如ID 102)有2个签入和2个签出。我只想获取签入的第一条记录和签出的第一条记录。这是我的方法

while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) {
        $num = count($data);
        for ($c=0; $c < $num; $c++) {
            if ($c == 1 || $c == 2 || $c == 3 || $c == 4) {
                if($d != 0){
                    $dtary[$d][$c] = $data[$c] ;
                }
            }
            if ($c == 9 ) {
                $d++ ;
            }
        }
    }
while(($data=fgetcsv($handle,1000,;”))!==FALSE){
$num=计数($data);
对于($c=0;$c<$num;$c++){
如果($c==1 | |$c==2 | |$c==3 | |$c==4){
如果($d!=0){
$dtary[$d][$c]=$data[$c];
}
}
如果($c==9){
$d++;
}
}
}

如何设置条件?

您需要
循环
数组并
构建
新的
数组
,如下所示

1st:在循环中存储每个
唯一id的
签入的第一个条目
,然后忽略该id的所有其他
签入条目

2nd:在循环中存储每个
唯一id的
签出的
最后一个条目
,因此您只需
覆盖每个条目<代码>如果($val['4']==“签出”){..}。

PHP:

  <?php


$data = Array(

        "0" => Array
            (
                "0" => "OUR COMPANY",
                "1" => "100",
                "2" => "100",
                "3" => "07/25/2017 5:02:57 PM",
                "4" => "Check Out",
                "5" => "1",
                "6" => "",
                "7" => 0,
                "8" => "Fingerpint",
                "9" => ""
            ),

        "1" => Array
            (
                "0" => "OUR COMPANY",
                "1" => "102",
                "2" => "102",
                "3" => "07/25/2017 7:45:53 AM",
                "4" => "Check In",
                "5" => "1",
                "6" => "",
                "7" => 0,
                "8" => "Fingerpint",
                "9" => ""
            ),

        "2" => Array
            (
                "0" => "OUR COMPANY",
                "1" => "102",
                "2" => "102",
                "3" => "07/25/2017 7:45:54 AM",
                "4" => "Check In",
                "5" => "1",
                "6" => "",
                "7" => 0,
                "8" => "Fingerpint",
                "9" => ""
            ),
    "3" => Array
            (
                "0" => "OUR COMPANY",
                "1" => "100",
                "2" => "100",
                "3" => "07/25/2017 6:02:57 PM",
                "4" => "Check In",
                "5" => "1",
                "6" => "",
                "7" => 0,
                "8" => "Fingerpint",
                "9" => ""
            ),
    "4" => Array
            (
                "0" => "OUR COMPANY",
                "1" => "102",
                "2" => "102",
                "3" => "07/25/2017 8:45:54 AM",
                "4" => "Check Out",
                "5" => "1",
                "6" => "",
                "7" => 0,
                "8" => "Fingerpint",
                "9" => ""
            ),

    );

$final_array=array();
foreach($data as $key=>$val)
{

    if(!isset($final_array[$val['1']]['check_in']) && $val['4']=="Check In"){


        $final_array[$val['1']]['check_in']=$val[3];
    }

  if($val['4']=="Check Out"){
     $final_array[$val['1']]['check_out']=$val[3];

  }

}

echo "<pre>";
print_r($final_array);
?>
"OUR COMPANY";"100";"100";07/25/2017 5:02:57 PM;"Check Out";"1";"";0;"Fingerpint";""
"OUR COMPANY";"102";"102";07/25/2017 7:45:53 AM;"Check In";"1";"";0;"Fingerpint";""
"OUR COMPANY";"102";"102";07/25/2017 6:01:34 PM;"Check Out";"1";"";0;"Fingerpint";""
"OUR COMPANY";"104";"104";07/25/2017 8:00:06 AM;"Check Out";"1";"";0;"Fingerpint";""
"OUR COMPANY";"104";"104";07/25/2017 5:35:19 PM;"Check In";"1";"";0;"Fingerpint";""
"OUR COMPANY";"105";"105";07/25/2017 8:47:37 AM;"Check In";"1";"";0;"Fingerpint";""
"OUR COMPANY";"108";"108";07/25/2017 8:45:42 AM;"Check In";"1";"";0;"Fingerpint";""
"OUR COMPANY";"108";"108";07/25/2017 6:04:00 PM;"Check Out";"1";"";0;"Fingerpint";""
"OUR COMPANY";"11";"11";07/25/2017 8:57:34 AM;"Check In";"1";"";0;"Fingerpint";""
"OUR COMPANY";"11";"11";07/25/2017 5:12:06 PM;"Check Out";"1";"";0;"Fingerpint";""
"OUR COMPANY";"112";"112";07/25/2017 8:43:56 AM;"Check In";"1";"";0;"Password";""
"OUR COMPANY";"112";"112";07/25/2017 5:39:26 PM;"Check Out";"1";"";0;"Password";""

这是你期望的结果吗

<?php

$myArray = array();
$myArray[] = array("OUR COMPANY","100","100","07/25/2017 5:02:57 PM","Check Out","1","",0,"Fingerpint","");
$myArray[] = array("OUR COMPANY","102","102","07/25/2017 7:45:53 AM","Check In","1","",0,"Fingerpint","");
$myArray[] = array("OUR COMPANY","102","102","07/25/2017 7:45:54 AM","Check In","1","",0,"Fingerpint","");
$myArray[] = array("OUR COMPANY","102","102","07/25/2017 6:01:34 PM","Check Out","1","",0,"Fingerpint","");
$myArray[] = array("OUR COMPANY","102","102","07/25/2017 6:01:35 PM","Check Out","1","",0,"Fingerpint","");
$myArray[] = array("OUR COMPANY","104","104","07/25/2017 8:00:06 AM","Check Out","1","",0,"Fingerpint","");
$myArray[] = array("OUR COMPANY","104","104","07/25/2017 5:35:19 PM","Check In","1","",0,"Fingerpint","");
$myArray[] = array("OUR COMPANY","105","105","07/25/2017 8:47:37 AM","Check In","1","",0,"Fingerpint","");
$myArray[] = array("OUR COMPANY","108","108","07/25/2017 8:45:42 AM","Check In","1","",0,"Fingerpint","");
$myArray[] = array("OUR COMPANY","108","108","07/25/2017 6:04:00 PM","Check Out","1","",0,"Fingerpint","");
$myArray[] = array("OUR COMPANY","11","11","07/25/2017 8:57:34 AM","Check In","1","",0,"Fingerpint","");
$myArray[] = array("OUR COMPANY","11","11","07/25/2017 5:12:06 PM","Check Out","1","",0,"Fingerpint","");
$myArray[] = array("OUR COMPANY","112","112","07/25/2017 8:43:56 AM","Check In","1","",0,"Password","");
$myArray[] = array("OUR COMPANY","112","112","07/25/2017 5:39:26 PM","Check Out","1","",0,"Password","");
$myArray[] = array("OUR COMPANY","112","112","07/25/2017 5:41:17 PM","Check Out","1","",0,"Password","");


/**
 * Compare two arrays and return true if intersected counts are the same.
 */ 
function in_array_intersect ($target, $haystack) {
    foreach ($haystack as $item) {
        if ( (count(array_intersect(array($item[1], $item[4]), $target)) == count($target))) {
            return true;
        }
    }
    return false;
}

// Define a new array to hold the matched records
$resultArray = array();

foreach ($myArray as $subArray) {
    // Create a new array with only two columns, ID and CheckIn/Out
    $target = array($subArray[1], $subArray[4]);    
    if (!in_array_intersect($target, $resultArray)){
        // Add $subArray to $resultArray if no array is found in $resultArray by matching the columns constraint
        array_push($resultArray, $subArray);
    }   
}

echo '<pre>';
print_r($resultArray);
echo '</pre>';

?>
你应该试试

如果约束仅为
ID和“签入/签出”
,而不考虑
日期时间
每天唯一的
签入/签出
,则签出:

Array
(
    [0] => Array
        (
            [0] => OUR COMPANY
            [1] => 100
            [2] => 100
            [3] => 07/25/2017 5:02:57 PM
            [4] => Check Out
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [1] => Array
        (
            [0] => OUR COMPANY
            [1] => 102
            [2] => 102
            [3] => 07/25/2017 7:45:53 AM
            [4] => Check In
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [2] => Array
        (
            [0] => OUR COMPANY
            [1] => 102
            [2] => 102
            [3] => 07/25/2017 6:01:34 PM
            [4] => Check Out
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [3] => Array
        (
            [0] => OUR COMPANY
            [1] => 104
            [2] => 104
            [3] => 07/25/2017 8:00:06 AM
            [4] => Check Out
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [4] => Array
        (
            [0] => OUR COMPANY
            [1] => 104
            [2] => 104
            [3] => 07/25/2017 5:35:19 PM
            [4] => Check In
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [5] => Array
        (
            [0] => OUR COMPANY
            [1] => 105
            [2] => 105
            [3] => 07/25/2017 8:47:37 AM
            [4] => Check In
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [6] => Array
        (
            [0] => OUR COMPANY
            [1] => 108
            [2] => 108
            [3] => 07/25/2017 8:45:42 AM
            [4] => Check In
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [7] => Array
        (
            [0] => OUR COMPANY
            [1] => 108
            [2] => 108
            [3] => 07/25/2017 6:04:00 PM
            [4] => Check Out
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [8] => Array
        (
            [0] => OUR COMPANY
            [1] => 11
            [2] => 11
            [3] => 07/25/2017 8:57:34 AM
            [4] => Check In
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [9] => Array
        (
            [0] => OUR COMPANY
            [1] => 11
            [2] => 11
            [3] => 07/25/2017 5:12:06 PM
            [4] => Check Out
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [10] => Array
        (
            [0] => OUR COMPANY
            [1] => 112
            [2] => 112
            [3] => 07/25/2017 8:43:56 AM
            [4] => Check In
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Password
            [9] => 
        )

    [11] => Array
        (
            [0] => OUR COMPANY
            [1] => 112
            [2] => 112
            [3] => 07/25/2017 5:39:26 PM
            [4] => Check Out
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Password
            [9] => 
        )

)

请格式化您的阵列,然后发布您的尝试,让我们看看您已经尝试了什么。我认为它应该是签入的第一个记录和签出的最后一个记录。不是吗?我不能在外面格式化。它是由指纹机生成的。我需要在php脚本中格式化。你说它是多维数组。这就是为什么我要求你格式化数组。谢谢兄弟,这非常有效。你能给我解释一些代码,以便我将来可以修改或修改。谢谢。答案已经更新并添加了一些注释。
Array
(
    [0] => Array
        (
            [0] => OUR COMPANY
            [1] => 100
            [2] => 100
            [3] => 07/25/2017 5:02:57 PM
            [4] => Check Out
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [1] => Array
        (
            [0] => OUR COMPANY
            [1] => 102
            [2] => 102
            [3] => 07/25/2017 7:45:53 AM
            [4] => Check In
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [2] => Array
        (
            [0] => OUR COMPANY
            [1] => 102
            [2] => 102
            [3] => 07/25/2017 6:01:34 PM
            [4] => Check Out
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [3] => Array
        (
            [0] => OUR COMPANY
            [1] => 104
            [2] => 104
            [3] => 07/25/2017 8:00:06 AM
            [4] => Check Out
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [4] => Array
        (
            [0] => OUR COMPANY
            [1] => 104
            [2] => 104
            [3] => 07/25/2017 5:35:19 PM
            [4] => Check In
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [5] => Array
        (
            [0] => OUR COMPANY
            [1] => 105
            [2] => 105
            [3] => 07/25/2017 8:47:37 AM
            [4] => Check In
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [6] => Array
        (
            [0] => OUR COMPANY
            [1] => 108
            [2] => 108
            [3] => 07/25/2017 8:45:42 AM
            [4] => Check In
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [7] => Array
        (
            [0] => OUR COMPANY
            [1] => 108
            [2] => 108
            [3] => 07/25/2017 6:04:00 PM
            [4] => Check Out
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [8] => Array
        (
            [0] => OUR COMPANY
            [1] => 11
            [2] => 11
            [3] => 07/25/2017 8:57:34 AM
            [4] => Check In
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [9] => Array
        (
            [0] => OUR COMPANY
            [1] => 11
            [2] => 11
            [3] => 07/25/2017 5:12:06 PM
            [4] => Check Out
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Fingerpint
            [9] => 
        )

    [10] => Array
        (
            [0] => OUR COMPANY
            [1] => 112
            [2] => 112
            [3] => 07/25/2017 8:43:56 AM
            [4] => Check In
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Password
            [9] => 
        )

    [11] => Array
        (
            [0] => OUR COMPANY
            [1] => 112
            [2] => 112
            [3] => 07/25/2017 5:39:26 PM
            [4] => Check Out
            [5] => 1
            [6] => 
            [7] => 0
            [8] => Password
            [9] => 
        )

)