PHP.EE FOORUM   
Nimi:   Pass:   Mäleta mind! 
   Teemad | php.ee esilehele | registreeri | Märgi kõik teemad loetuks | #php.ee Skype vestlus | RSS
UUS TEEMA  OTSI  Lehekülgi: 1
kahe array võrdlemine
Postitaja: sssseeee 2013-05-08 08:00:37
sooviks kahte arrayd võrrelda ja kui teises ei ole neid, mis esimeses, siis annaks veateate. arrayd oleksid:

Array ( [0] => essa.png [1] => tessa.png [2] => tessa.png )

ja teine

Array ( [0] => tessa.png )

ehk inimene valis vormis esimese array asjad bronnimiseks
kahjuks teine array väljastas, et vaba on vaid tessa.png
nüüd peaks vea väljastama, kuna sooviti essa ja 2 korda tessa, aga vaba on tessa

kui teine array oleks samade väärtustega (järjekord pole tähtis), või sisaldaks rohkem väärtuseid, mis esimene, aga kindlasti alati ka neid, mis esimeses on olemas, siis samuti viga ei tuleks. tähtis ongi, et viga tuleb alati siis, kui teises arrays pole sama palju ja samu asju, mis esimeses.

kuidas seda kontrollin ja vea väljastan?
RE: kahe array võrdlemine
Postitaja: geo__ 2013-05-08 09:19:34

PHP kood:
 

$a 
= array('1.10'12.41.13);

if (
in_array('12.4'$atrue)) {
    echo 
"'12.4' found with strict checkn";
}

if (
in_array(1.13$atrue)) {
    echo 
"1.13 found with strict checkn";
}



allikas php.net
RE: kahe array võrdlemine
Postitaja: kullar 2013-05-08 09:22:22
Ise kasutaks foreach'i ja in_array funktsioone.


PHP kood:
 
$_arrExisting 
= array('selected1','selected3');
$_arrSelected arrray('selected1''selected2');

foreach(
$_arrSelected as $row){
 if(
in_array($row,$_arrExisting)){
   echo 
'olemas';
 }else{
   echo 
'puudub';
 }
}
RE: kahe array võrdlemine
Postitaja: rtfm 2013-05-08 10:28:41
RE: kahe array võrdlemine
Postitaja: sssseeee 2013-05-08 15:03:26
see juba sobib peaaegu, aga sul väljastab iga olemas oleva asja kohta "olemas" ja puuduolevatele "puudu"

ehk tulemus on "puudubolemasolemas"

aga, et kuidas ühe puuduoleva asja puhul kuvada vaid "viga" mitte et "vigaOKOK" ?


TSITEERITUD:
Ise kasutaks foreach'i ja in_array funktsioone.


PHP kood:
 
$_arrExisting 
= array('selected1','selected3');
$_arrSelected arrray('selected1''selected2');

foreach(
$_arrSelected as $row){
 if(
in_array($row,$_arrExisting)){
   echo 
'olemas';
 }else{
   echo 
'puudub';
 }
}
RE: kahe array võrdlemine
Postitaja: sssseeee 2013-05-08 15:07:03
lisaks viga selles, ehk kui valitud on

kirves, kast, kast, kirves

ja saadaval kirves, kast, kast, kast

sisi väljastab OK
kuigivalitud on 2 kirvest ja 2 kasti, saadaval 1 kirves ja 3 kasti

peaks töötama nii, et kui valitud kõik asjad on saadavates olemas, olgu kasvõi identsed asjad, siis viga ei ole, aga kui üks asi puudu, siis viga.
RE: kahe array võrdlemine
Postitaja: dragut 2013-05-08 15:39:45
Pakun omalt poolt sellise variandi välja:

PHP kood:
 
<?php

function vordle($existing$selected) {
        foreach (
$selected as $v){
                
$key array_search($v$existing);
                if (
$key !== false){
                        echo 
"Leidsin elemendi "$v" ja eemaldan selle. n";
                        unset(
$existing[$key]);
                } else {
                        echo 
"Ei leidnud elementi "$v" - VIGA!n";
                        return 
false;
                }
        }
        echo 
" [OK] Kõik valitud elemendid on saadaval!n";
        return 
true;
}

$existing = array('kirves''kast''kast''kirves');
$selected = array('kirves''kast''kast''kast');
vordle($existing$selected);

$selected = array('kirves''kast''kirves''kast');
vordle($existing$selected);

$selected = array('kirves''kast''kirves''kast''nael');
vordle($existing$selected);

$existing = array('kirves''kast''kast''kirves''nael');
$selected = array('kirves''kast''kast''kast');
vordle($existing$selected);

?>

RE: kahe array võrdlemine
Postitaja: ise php 2013-05-08 17:29:17
Kuna esimeses teemas jutt bronnimisest järeldan, et sul pole vaja võrrelda Arrayd vaid teada, kas vajalik ese-teenus on saadaval. Võiksid läheneda hoopis selliselt.

PHP kood:
 
$tooted 
= Array('kana''part''banaan''maasikas');
$saadaval = Array('kana''maasikas');

echo
'<form action="?" method="post">';
foreach(
$tooted as $toode){

if(
in_array($toode,$saadaval)){$dis='';}else{$dis='disabled';}
echo 
'<input type="checkbox" name="toode[]" value="'.$toode.'" '.$dis.'> '.$toode.'<br>';
}
echo
'</form>';

Leheküljed: 1

©2002-2013 Martin Rebane & PHP.ee kaasautorid
  0.0804278850555