Buongiorno a tutti,
è possibile in qualche modo controllare un array e se un valore è presente una sola volta ricavare 1 se è presente più volte ricavare il n. di volte che è presente?
Grazie
SK
Buongiorno a tutti,
è possibile in qualche modo controllare un array e se un valore è presente una sola volta ricavare 1 se è presente più volte ricavare il n. di volte che è presente?
Grazie
SK
ciao, certo!
Codice PHP:
$ar = array ( 1, 2, 1, 1, 1, 3, 3, 3, 2, 2, 4, 5 );
$count = count($ar);
for ($i = 0; $i < $count; $i++) {
$num = 0;
if ($ar[$i] != null) {
$compare = $ar[$i];
for ($j = 0; $j < $count; $j++) {
if ($ar[$j] != null) {
if ($compare == $ar[$j]) {
$ar[$j] = null;
$num++;
}
}
}
if ($num > 1) echo $compare . " compare " . $num . " volte.
";
else if ($num == 1) echo $compare . " compare una volta.
";
}
}
Grazie ci ero appena riuscito così:
Ma mi sono accorto che non risolvo comunque il mio problemacodice:$new_array=array_count_values($array); while (list ($key2, $val) = each ($new_array)) { echo $key2." - ".$val ." "; }![]()
beh questi codici risolvono il problema che hai esposto
qual'è il tuo problema?
Vediamo se riesco a spiegarloOriginariamente inviato da diabolikk
beh questi codici risolvono il problema che hai esposto
qual'è il tuo problema?
Facciamo conto di avere 4 array composte così:
Ora io devo ciclare il secondo array, quindi $array_1 e fin qui nessun problema basta fare un foreach e la cosa è risolta.codice:$array_0 = array('1', '2', '3', '4', '5', '6', '7', '8', '9', '10'); $array_1 = array('2010-01-01', '2010-01-10', '2010-01-15'); $array_2 = array('2010-01-01', '2010-01-10', 2010-01-10', '2010-01-15); $array_3 = array('10' ,'20', '6', '8');
Il problema sta nel fatto, che come vedi, nel terzo array (molto semplificato anche questo), ci possono essere valori uguali, 2, 3 , 4 ,5, 100 volte.
Ora nel foreach usato per ciclare $array_1, al suo interno io devo o meglio dovrei, cercare le corrispondeze......come vedi $array_2 e $array_3 contengono lo stesso numero di chiavi ovvero se estraggo $array_2[1] prendo il suo valore da $array_3[1], quindi avrò: "2010-01-10 => 20", e anche fin qui tutto bene, tanto per capirci in codice:
e così funziona se non ho duplicati, perche io devo incasellare i valori in una tabella html, sotto a ogni data corrispondente.codice:foreach($array_0 as $valore_0){ foreach($array_1 as $valore_1){ for($i=0; $i!=count($array_2); $i++){ if($array_2[$i]==$valore_1){ if($array_3[$i]==$valore_0){ echo "Trovata corrispondenza: ".$valore." => ".$array_2[$i]." => ".$array_3[$i]." "; }else{ echo "Non trovata "; } } } } }
Usando i valori che ho messo ad esempio negli array, mi ritrovo che salta una cella, ma giustamente, controlla il primo valore, trova la corrispondenza delle due date, e prende il corrispettivo valore da $array_3, al secondo ciclo di $array_1 trova il primo '2010-01-10' quindi trova la corrispondenza di data, ma non di valore tra $array_0 e $array_3 e quindi passa al terzo ciclo e li trova corrispondenza come al primo ciclo, quello che serve a me è che se trova corrispondenza di data ma non di valore, non faccia nulla, come se non esistesse, spero di essermi spiegato, ma è abbastanza incasinato, anche perchè qui ho fatto un esempio per semplificare il reale codice.
![]()
non ho capito proprio al 100%, quindi più che soluzioni posso farti delle proposte.
hai pensato a cercare le corrispondenze di array_1 in array_2 salvandoti tutte le posizioni dell'array due in cui il valore di array_1 ritorna?
esempio:
così ottieni un array composto da due elementi che conterrà i valori 1 e 2Codice PHP:
$array_2 = array('2010-01-01', '2010-01-10', '2010-01-10', '2010-01-15');
print_r(array_keys($array_2, "2010-01-10"));
Array
(
[0] => 1
[1] => 2
)
Continuo a non uscirne.... eppure sono sicuro che è una cavolata immane...Originariamente inviato da diabolikk
non ho capito proprio al 100%, quindi più che soluzioni posso farti delle proposte.
hai pensato a cercare le corrispondenze di array_1 in array_2 salvandoti tutte le posizioni dell'array due in cui il valore di array_1 ritorna?
esempio:
così ottieni un array composto da due elementi che conterrà i valori 1 e 2Codice PHP:
$array_2 = array('2010-01-01', '2010-01-10', '2010-01-10', '2010-01-15');
print_r(array_keys($array_2, "2010-01-10"));
Array
(
[0] => 1
[1] => 2
)