能够使用POST批评现有数据的传入数据

时间:2017-10-19 20:24:31

标签: php explode

POST是否可以将给定数据与现有数据相匹配?

$existingRecords = "1,3,4,6";
$_POST["newRecords"] = "6,4,3,1";

以上两个代码中有1,3,4,6个数字。现有代码中的数字是定期的。 (排序:从小到大)

但新发布的数据结构不规则。 如何在结构配对中做到这一点?

我试过了这些;

$existingRecords = "1,3,4,6";
$_POST["newRecords"] = "6,4,3,1";

$existingRecordsArray = explode(',', $existingRecords);
$newRecordsArray = explode(',', $_POST["newRecords"]);

if($newRecordsArray == $existingRecordsArray) {
   echo "compatible";
} else { 
   echo "incompatible"; 
}

但我无法成功。你能建议我一个方法吗?

简要说明//新传入的数据将从小到大排序

3 个答案:

答案 0 :(得分:1)

您可以遍历$newRecords并检查当前号码是否包含在$existingRecords中。如果不是,那么return false,如果是,则继续。如果返回值为true,则包含所有数字。作为奖励,如果您需要所有 $existingRecords中的数字,请检查其lengths是否相等:

<?php
function check($existing, $new) {
    $existingArray = explode(",", $existing);
    $newArray = explode(",", $new);
    if (count($newArray) !== count($existingArray)) return false; // if length is not equal, they're not all contained
    foreach ($newArray as $n) {
        if (!in_array($n, $existingArray)) return false;
    }
    return true;
}
$existingRecords = "1,3,4,6,5";
$newRecords = "6,4,3,1,5";
var_dump(check($existingRecords, $newRecords));

but with this filter the total average is wrong

答案 1 :(得分:1)

您可以使用array_diff检查数组

$existingRecords = "1,3,4,6";
$_POST["newRecords"] = "6,4,3,1";

$existingRecordsArray = explode(',', $existingRecords);
$newRecordsArray = explode(',', $_POST["newRecords"]);

// use array_diff function to check if both arrays are same.
$result = array_diff($existingRecordsArray, $newRecordsArray);

if(empty($result)){
    echo "compatible";
}else{
    echo "incompatible"; 
}

如果你只是需要知道两个阵列是什么&#39;值完全相同(无论键和顺序如何),然后这是一个简单的方法,而不是使用array_diff:

sort($existingRecordsArray);
sort($newRecordsArray);

if($existingRecordsArray == $newRecordsArray){
    echo "compatible";
}else{
     echo "incompatible"; 
}

答案 2 :(得分:0)

如果我理解正确,你想比较两者,看看它们是否相等。 你会在explode进行一半的我会说:

$existingRecords = "1,3,4,6";
$_POST["newRecords"] = "6,4,3,1";

$existingRecordsArray = explode(',', $existingRecords);
$newRecordsArray = explode(',', $_POST["newRecords"]);

if(empty(array_diff($newRecordsArray, $existingRecordsArray)) {
   echo "compatible";
} else { 
   echo "incompatible"; 
}

根据您是否想要找出两者共有的项目或它们的区别,请考虑前者array_intersect和后者array_diff