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";
}
但我无法成功。你能建议我一个方法吗?
简要说明//新传入的数据将从小到大排序
答案 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));
答案 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。