PDA

View Full Version : بهترین راه حل برای مقایسه 20 متغییر با یکدیگر چیه ؟



caypiyouler
یک شنبه 18 اسفند 1392, 16:20 عصر
سلام
وقت بخیر
فرض کنید 20 تا اینپوت داریم که کار باید پرش کنه و از طرفی نمیخوایم هیچ کدوم از این ها مثل هم باشه یعنی چک کنیم که $_POST['name '] با $_POST['tell'] (و بقیه پست های ارسالی توسط کاربر) برابر نباشه
چون تعداد زیاده نمیشه تک تک با if یا case چک کرد و نتونستم الگوریتم برای نوشتن فانکشین رو هم پیدا کنم چون تویه فانکشین هم اگه از case استفاده کنیم چون با خود متغییر هم چک میشه درست جواب نمیده مثل زیر :

<?php
$name=$_POST['name'];
$tell=$_POST['tell'];
$post=$_POST['post'];
// and ....

function cp($h){
$name=$GLOBALS['name'];
$tell=$GLOBALS['tell'];
$post=$GLOBALS['post'];
// and ...
switch( $h )
{
case "$name":
echo "no ok";
break;
case "$tell":
echo "no ok";
break;
case "$post":
echo "no ok";
break;
/// and ....

default:
echo "ok";
}
}
cp($post);
cp($name);
cp($tell);
// and ....
?>
بهترین روش برای چک کردن این مورد چیه ؟
پیشاپیش ممنون از راهنمایی تون

MRmoon
یک شنبه 18 اسفند 1392, 16:51 عصر
<?PHP

$vars = $_GET;
function cp($arrayOfVars)
{
foreach($arrayOfVars as $key => $value)
{
$newArray = $arrayOfVars;
unset($newArray[$key]);
if(in_array($value, $newArray)) {
return false;
}
}
return true;
}

if(! cp($vars)) {
echo "FAIL!";
} else {
echo "OK!";
}

***BiDaK***
یک شنبه 18 اسفند 1392, 16:59 عصر
البته اگر میخواین حتما مقادیر برابر نباشه ازاین راه میتونین استفاده کنین.
مقادیر رو در یک آرایه میریزید و از آرایتون array_unique میگیگیرد که این تابع مقادیر تکراریرو حذف میکنه. و در نهایت آرایه ی یونیک و آرایه ی اصلی رو باهم مقایسه میکنید که اگر برابر بود که مقدار تکراری وجود نداره و اگرم برابر نبود که ....

$array = array("ali", "ali", "mohsen", "qolam");
$array_unique = array_unique($array);
//print_r($array_unique);
if ($array != $array_unique)
{
echo 'error!';
}

caypiyouler
یک شنبه 18 اسفند 1392, 17:10 عصر
از هر دو استاد عزیز بسیار ممنونم