Somma solo se non riappare elemento

loreberti10

Utente Attivo
22 Set 2012
43
0
0
Ciao a tutti, vi vorrei chiedere una cosa.
Ho 2 array : uno di interi e l'altro di strnghe;
Quello che vorrei fare è contare un indice fintanto che gli elementi dell'array stringhe sono uguali, ma devo evitare che mi conti due volte lo stesso numero nell'array di interi.
Vi faccio vedere un esempio, io ho questi due array:

Codice:
1
27 Sep 12
2
27 Sep 12
3
28 Sep 12
4
28 Sep 12
1
28 Sep 12
2
28 Sep 12
3
28 Sep 12
2
28 Sep 12
3

Ora, il primo elemento è dell'array di interi e il secondo è dell'array di stringhe , li ho stampati uno e uno per comodità.
Il risultato che in pratica vorrei ottenere è un 3 array con questi valori

2
27 Sep 12

6
28 Sep 12.
 
Ciao,
non ho capito bene
non ti basta cosi?
PHP:
<?php
$date = array("27 Sep 12", "27 Sep 12", "28 Sep 12", "28 Sep 12", "28 Sep 12", "28 Sep 12", "28 Sep 12", "28 Sep 12");

$c = array_count_values($date);

var_dump($c);
?>
a cosa ti serve l'array degli interi?
 
Ciao,
non ho capito bene
non ti basta cosi?
PHP:
<?php
$date = array("27 Sep 12", "27 Sep 12", "28 Sep 12", "28 Sep 12", "28 Sep 12", "28 Sep 12", "28 Sep 12", "28 Sep 12");

$c = array_count_values($date);

var_dump($c);
?>
a cosa ti serve l'array degli interi?

Scusami prima ho scritto male il numero di risposta, non deve essere 28 SEP 12 , 6 ma 28 SEP , 4
no così non va perché in pratica io dovrei fare questa cosa, devo prendere il numero di elementi non ripetuti per ogni data,
facendo cosi se ad esempio al primo 28 Sep è accostato l'intero 3 (che sarebb un i ID di un altro elemento) e nel terzo 28 Sep si ripresenta io non lo dovrei contare, con count Values me lo conterebbe, non so se mi sono spiegato.
Cioè se ho
Codice:
1
27 Sep 12
2
27 Sep 12
3
28 Sep 12
4
28 Sep 12
1
28 Sep 12
2
28 Sep 12
3
28 Sep 12
2
28 Sep 12
3

devo restituire 27 sep 12 , 2 perché non ci sono elementi doppi, mentre 28 Sep 12 ,4 perché 2 e 3 si ripetono, quindi le devo contare una volta sola.
Il fatto dei due array l'ho fatto io, ma posso farlo anche in un array singolo questa cosa, pensavo che dividendoli sarebbe stato più semplice lavorare.
 
forse potresti provare cosi
se riesci a costruire l'array piu o meno come ti posto dovresti riuscire a sfruttare la funzione array_count_values()
PHP:
<?php

$date = array(
    "1,27 Sep 12",
    "2,27 Sep 12",
    "3,28 Sep 12",
    "4,28 Sep 12",
    "1,28 Sep 12",
    "2,28 Sep 12",
    "3,28 Sep 12",
    "2,28 Sep 12"
);
// raggruppi per value
$c = array_count_values($date);
// inizializzi un array
$ar = array();
// ricomponi l'array modificato
foreach ($c as $key => $value) {
    $ex = explode(',', $key);
    $ar[] = $ex[1];
}
// raggruppi il nuovo array per value
$f = array_count_values($ar);
// stampa risultato
var_dump($f);
?>
output:
Codice:
array
  '27 Sep 12' => int 2
  '28 Sep 12' => int 4
 
Ultima modifica:
forse potresti provare cosi
se riesci a costruire l'array piu o meno come ti posto dovresti riuscire a sfruttare la funzione array_count_values()
PHP:
<?php

$date = array(
    "1,27 Sep 12",
    "2,27 Sep 12",
    "3,28 Sep 12",
    "4,28 Sep 12",
    "1,28 Sep 12",
    "2,28 Sep 12",
    "3,28 Sep 12",
    "2,28 Sep 12"
);
// raggruppi per value
$c = array_count_values($date);
// inizializzi un array
$ar = array();
// ricomponi l'array modificato
foreach ($c as $key => $value) {
    $ex = explode(',', $key);
    $ar[] = $ex[1];
}
// raggruppi il nuovo array per value
$f = array_count_values($ar);
// stampa risultato
var_dump($f);
?>
output:
Codice:
array
  '27 Sep 12' => int 2
  '28 Sep 12' => int 4
Perfetto sono risuscito a formare l'array come mi avevi postato e funziona! Grazie mille! ;)
 

Discussioni simili