Ciclo su array con valorui dispari

  • Creatore Discussione Creatore Discussione Monital
  • Data di inizio Data di inizio

Monital

Utente Attivo
15 Apr 2009
778
2
18
Buonasera,

piccolo quesito:

Ho due variabili array contenenti numeri inter e devo conforntarle e prendere la pi grande quindi se

$a=6 e $b=7 devo usare $b epr il ciclo

in questo ciclo quando gli elemnti sono in numero dispari devo compiere due azioni lasciando in coda l'ultimo.

$valore[];///[0]=>Antonio,[1]=>Michele,[2]=>Giovanni,
for($x=0;$x=$b){
$newvalore= $valore[$x] +1;
}

cosi mi aggiunge 1 per tutti gli elementi mentre io voglio che si fermi al'ultimo pari quindi al [5] ed aggiungere un +1 da [0] a [5] mentre al [6] deve aggiungermi +2

tutto considerando che le variabili $a e $b mi arrivano da un conteggio precedente quindi non le conosco a priori.


penso che non dovrebbe essere difficile come cosa ma sui cilci for quando sono più complessi ci sbatto il muso

grazie
 
ciao
se non ho capito male
PHP:
<?php
//valore di $b
$cicla=(int)($b/2)*2;// es se $b = 6 $cicla = 6 se $b =7 $cicla = sempre 6
for($k=0;$k < $cicla; $k++){
	$newvalore= $valore[$k] +1;
}
if($b%2 != 0){$valore[$b]+2;}//$b è dispari
?>
 
mmh si più o meno

ma forse mi sono spiegato male o probabilemnte sto formulando amle il codice
provo a aspiegare meglio cosa voglio fare

ho due array

$uomini------------->///[0]=>Antonio,[1]=>Michele,[2]=>Giovanni
$donne------------->///[0]=>Isabella,[1]=>Rosa,[2]=>Carmela,[3]=>Francesca,[4]=>Michelina


ora devo inseirre nel database, le coppie uomini - donne (coppia) in funzione delle chiavi e le restanti. (single)
uomini[0] - donne[0] = Antonio - Isabella
uomini[1] - donne[1] = Michele- Rosa
uomini[2] - donne[2] = Giovanni - Carmela

e nel database Single quello che rimane

donne[3]=Francesca
donne[4]=Michelina

ho fato cosi intanto

PHP:
//definisco il valore maggiroe da ciclare
if(donne>$uomini){
$val=count($donne);
}else{
$val=count($uomini);
}

for($x=0;$x<$val;$x++){

$nome_uomo=$uomini[$x];
$nome_donna=$donna[$x];

$sqlquery = "INSERT INTO Tabella VALUES('','Coppia','".$nome_uomo."','".$nome_donna."'')";
$result=mysql_query($sqlquery);
}
cosi mi restituisce
INSERT INTO Tabella VALUES('','Coppia','Antonio','Isabella')
INSERT INTO Tabella VALUES('','Coppia','Michele','Rosa')
INSERT INTO Tabella VALUES('','Coppia','Givoanni','Carmela')
INSERT INTO Tabella VALUES('','Coppia','','Francesca')
INSERT INTO Tabella VALUES('','Coppia','','Michelina')

e diciamo che mi potrebbe anche andar bene ma ho la necessita che Francesca e michelina invece di coppia devonoa vere Single in quel campo
INSERT INTO Tabella VALUES('','Single','','Francesca')
INSERT INTO Tabella VALUES('','Single','','Michelina')

In pratica potevo sfruttare le chiavi della serie

"Se trovi le coppie uguali ---------->fai un insert, dove non c'è corrispondenze--------->fai un altro tipo di insert

quindi probabilmente sto sbagliando il ragionamento alla base
 
Prova con qualcosa di questo genere.
Non l'ho testata.
PHP:
//definisco il valore MINORE da ciclare 
if($donne<$uomini){ 
$val=count($donne); 
$val2=count($uomini);
}else{ 
$val=count($uomini); 
$val2=count($donne);
} 

for($x=0;$x<$val;$x++){ 

$nome_uomo=$uomini[$x]; 
$nome_donna=$donna[$x]; 

$sqlquery = "INSERT INTO Tabella VALUES('','Coppia','".$nome_uomo."','".$nome_donna."'')"; 
$result=mysql_query($sqlquery);
}  
while($x<$val2){
if(array_key_exist($x,$uomini))
$nome=$uomini[$x];
else
$nome=$donne[$x];
$sqlquery = "INSERT INTO Tabella VALUES('','Single','".$nome."')"; 
$result=mysql_query($sqlquery);
$x++;
}
 
ciao
potresti provare fare anche così
PHP:
<?php
//..........
$minore=min(count($uomini), count($donne));
$maggiore=max(count($uomini), count($donne));
for($k=0; $k< $minore; $k++){
	$query="INSERT INTO tabella(campo_1,campo_2,campo_3) VALUES('coppia','".$uomini[$k]."', '".$donne[$k]."')";
	mysql_query($query);
	unset($uomini[$k]);
	unset ($donne[$k]);
}
for($j=$minore; $j <$maggiore;$j++){
	if(is_array($uomini)){//in questo modo metto tra i single o gli uomini o le donne in eccesso
		$da_ins=$uomini[$j];
	}elseif(is_array($donne)){
		$da_ins=$donne[$j];
	}
	$query="INSERT INTO tabella(campo_1,campo_2,) VALUES('single','$da_ins')";
	mysql_query($query);
}
//..........
?>
 
ciao
potresti provare fare anche così
PHP:
<?php
//..........
$minore=min(count($uomini), count($donne));
$maggiore=max(count($uomini), count($donne));
for($k=0; $k< $minore; $k++){
	$query="INSERT INTO tabella(campo_1,campo_2,campo_3) VALUES('coppia','".$uomini[$k]."', '".$donne[$k]."')";
	mysql_query($query);
	unset($uomini[$k]);
	unset ($donne[$k]);
}
for($j=$minore; $j <$maggiore;$j++){
	if(is_array($uomini)){//in questo modo metto tra i single o gli uomini o le donne in eccesso
		$da_ins=$uomini[$j];
	}elseif(is_array($donne)){
		$da_ins=$donne[$j];
	}
	$query="INSERT INTO tabella(campo_1,campo_2,) VALUES('single','$da_ins')";
	mysql_query($query);
}
//..........
?>


perfetto è esattamente quelloc he mi serviva.

Non ho dovuto modificare niente se non il nome della variabile

thank
 

Discussioni simili