能够使用 POST 使用现有数据来评价传入数据
To be able to critique incoming data with existing data with POST
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";
}
但是我没能成功。你能给我一个方法吗?
简单地说 // 新传入的数据会从小到大排序
您可以遍历 $newRecords
并检查当前数字是否包含在 $existingRecords
中。如果不是,则return false
,如果是,则继续。如果return值为true
,则包含所有数字。作为奖励,如果您需要 all $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));
您可以使用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";
}
如果你只需要知道两个数组的值是否完全相同(不管键和顺序),那么不用array_diff,这是一个简单的方法:
sort($existingRecordsArray);
sort($newRecordsArray);
if($existingRecordsArray == $newRecordsArray){
echo "compatible";
}else{
echo "incompatible";
}
如果我没理解错的话,你是想比较一下两者是否相等。
explode
ing 你已经完成了一半我会说:
$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 for the former and array_diff 后者。
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";
}
但是我没能成功。你能给我一个方法吗?
简单地说 // 新传入的数据会从小到大排序
您可以遍历 $newRecords
并检查当前数字是否包含在 $existingRecords
中。如果不是,则return false
,如果是,则继续。如果return值为true
,则包含所有数字。作为奖励,如果您需要 all $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));
您可以使用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";
}
如果你只需要知道两个数组的值是否完全相同(不管键和顺序),那么不用array_diff,这是一个简单的方法:
sort($existingRecordsArray);
sort($newRecordsArray);
if($existingRecordsArray == $newRecordsArray){
echo "compatible";
}else{
echo "incompatible";
}
如果我没理解错的话,你是想比较一下两者是否相等。
explode
ing 你已经完成了一半我会说:
$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 for the former and array_diff 后者。