测试数组的值

时间:2019-04-11 08:34:21

标签: php laravel algorithm

所以挑战者,我有一个用循环构造的数组 而且我想检查数组中是否有两个具有不同代码的索引

所以我的数组就像:

Array ( 
    [0] => Array ( 
        [0] => 1 
        [1] => 3f 
    )
    [1] => Array (
        [0] => 2 
        [1] => 3s
    )
    [2] => Array (
        [0] => 2
        [1] => 2f
    )
)

这里有两个索引2,它们没有相同的代码“ 3s”和“ 2f”,所以是一个错误

另一个例子

$err=array();
array_push($err, array(1,'2f'));
array_push($err, array(2,'3f'));

如果新条目为array_push($err, array(2,'4f'));,如何检查数组中是否存在索引2和代码是否不相似

2 个答案:

答案 0 :(得分:0)

我可能用错误的方式解释了这个问题,但是对我来说,您给出的最后一个示例似乎不正确,而是在元素3上应该是0 => 2, 1 => '3s'(在您编辑后,您确认了我的怀疑)

所以我的解释是,您要检查数据集中是否存在相同的INDEX但不同的CODE。

要进行检查,可以使用一维数组并按以下方式执行检查:

foreach ($files as $file ) {
    if (isset($this->tab[$file->INDEX]) && $this->tab[$file->INDEX] != $file->CODE) {
         // Failure state
    }

    $this->tab[$file->INDEX] = $file->CODE;
}

答案 1 :(得分:0)

我已经创建了一个函数,您可以尝试以下操作:

function check(array $files){
    $collect = [];
    foreach($files as $file){

       foreach($collect as $record){
           if($record === $file) //check code and value or array identical
               return true;  //return true if match found
       }

       $collect[] = $file; //collect all array (index and code)till match 
                           //not found
    }

  return false;  //return false if match not found at last

}

$files= Array ( 
0 => Array ( 
    0 => 1,
    1 => '3f'
),
1 => Array (
    0 => 2,
    1 => '2f'
),
2 => Array (
    0 => 2,
    1 => '2f'
)
);

var_dump(check($data));

成功则返回true