Multidimentional array unique by column(s)

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
Άβαταρ μέλους
fatsouls32
Δημοσιεύσεις: 34
Εγγραφή: 18 Δεκ 2012 10:10

Multidimentional array unique by column(s)

Δημοσίευση από fatsouls32 » 04 Ιαν 2013 10:16

Παιδιά καλημέρα, θα ήθελα μια βοήθεια για το εξής concept.
Έχουμε ένα array και θέλουμε επιλέγοντας ένα ή και περισσότερα Keys(name, email, etc..) με τη βοήθεια μιας φόρμας, να σκανάρουμε τον πίνακα και να αφαιρεί τα duplicate rows σύμφωνα με τα επιλεγμένα columns.
Ο πίνακας είναι αυτός:
[0] => SimpleXMLElement Object
(
[name] => John
[address] => address 1
[city] => athens
[email] => info@athens.com
[telephone] => 210123456
)

[1] => SimpleXMLElement Object
(
[name] => Dave
[address] => address 1
[city] => athens
[email] => info@aaaa.com
[telephone] => 210321654
)

[2] => SimpleXMLElement Object
(
[name] => Other
[address] => address 11
[city] => Larisa
[email] => info@larisa.gr
[telephone] => 210321654
)

Αν για τον παραπάνω πίνακα επιλέξω city τότε έχουμε dublicate στα row 0,1.
Αν όμως προσθέσω στην αναζήτηση και το key telephone τότε όλα κάνουν match οπότε ο πίνακας δεν πρέπει να γυρνάει καμία εγγραφή.

Ευχαριστώ

Άβαταρ μέλους
fafos
Script Master
Δημοσιεύσεις: 6230
Εγγραφή: 30 Νοέμ 2004 03:09

Multidimentional array unique by column(s)

Δημοσίευση από fafos » 04 Ιαν 2013 22:20

Den gnorizo an katalava kala alla diagrafeis oles tis diploeggrafes analoga me to key asxeta tou value.. dhladh an exeis 5 arrays me tis 2 na exeoun city=athens, 2 me city=larisa kai 1 me city=nafplion, thes na menei mono h 1 me city = nafplion kai to idio gia ta ypoloipa keys.. right?

an nai.. ypothetoume oti h array einai auth:

Κώδικας: Επιλογή όλων

$array = array(
array
(
"name" => 'John',
"address" => 'address 1',
"city" => 'athens',
"email" => 'info@athens.com',
"telephone" => '210123456'
),

array
(
"name" => 'Dave',
"address" => 'address 1',
"city" => 'athens',
"email" => 'info@aaaa.com',
"telephone" => '210321654'
),

array
(
"name" => 'Other',
"address" => 'address 11',
"city" => 'Larisa',
"email" => 'info@larisa.gr',
"telephone" => '210321654'
) 

);

H vasikh idea diagrafhs diplotypon keys einai auth:

Κώδικας: Επιλογή όλων

foreach($array as $k => $v)
{
    foreach($array as $key => $value)
    {
	
			if($k != $key && $v['city'] == $value['city'])
				unset($array[$key]);
    }
		
}
se auto an doseis print_r($array); tha soy gyrisei mono thn array me thn Larisa

Gia na psaxnei se perissotera tou enos tha prepei na dhmiourghseis ena array me auta pou thes na theseis os orous anazhthshs (p.x. city kai telephone) opote tha ginei kapos etsi:

Κώδικας: Επιλογή όλων

$search = array('city','telephone');//opoi anazhthshs

foreach($array as $k => $v)
{
    foreach($array as $key => $value)
    {
		foreach($search as $sval)
		{	
			if($k != $key && $v[$sval] == $value[$sval])
				unset($array[$key]);
		}			
    }
		
}

To sygkekrimeno tha gyrisei tipota afou tha vrei pantou diploegrafes

an to kaneis

Κώδικας: Επιλογή όλων

$search = array('address');//opoi anazhthshs
tha soy gyrisei mono ton "Other" klp klp
Οι πάνες και οι πολιτικοί πρέπει να αλλάζονται συχνά για τον ίδιο λόγο...

Άβαταρ μέλους
fatsouls32
Δημοσιεύσεις: 34
Εγγραφή: 18 Δεκ 2012 10:10

Multidimentional array unique by column(s)

Δημοσίευση από fatsouls32 » 05 Ιαν 2013 10:34

@fafos
Φίλε μου σε ευχαριστώ πάααααρα πολύ για την απάντησή σου, το script δουλεύει άψογα!!!!!!!!.

Είχα μπλέξει με την array_unique που δουλευει μόνο για μονοδιάστατο πίνακα και έκανα αρκετές αλχημείες που όπως καταλαβαίνεις δεν οδήγησαν πουθενά.

Ευχαριστώ και πάλι!!!

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης