Originariamente inviato da Fichico
Avrei la necessità, dati 3 array, di recuperare determinati valori non ripetuti (in pratica devo ricavare eventuali dipendenze di ID da un db) ed inserirli in un array di risultati
All'indice C posso avere dei doppioni

Per fare un esempio vi posto il codice dove, ahimè, il risultato non è quello che mi aspetto ... non so più come fare

Dati i 3 array:
- se quello con chiave B non è un array, metto in tmp quello con chiave A
- altrimenti faccio differenza tra A e B e
-> se la diff non è array vuoto, tmp= merge A+diff
-> altrimenti tmp= merge A+diff

dall'esempio del codice il risultato che mi aspetto, senza doppioni, è
codice:
ris = array(1 => array(1,2,8), 2 => array(1,2), 3 => array(1,2), 4 => array(2,8))
qualcuno sa dirmi dove sbaglio? a me sembra tutto ok

Codice PHP:
// Mancano le dichiarazioni iniziali
$arr1 = array();
$arr2 = array();
$arr3 = array();
$arr4 = array();

// solitamente si indica padre-figlio ..... perche' al femminile ? 
$arr1['A'] = array(2,5,7,8,9,10);    // tutti gli id (madri e figlie)
$arr1['B'] = array(5,7,9,10);        // id con madre<>0 (figlie)
$arr1['C'] = array(2,2,1,1);        // madre dei B    (madri delle figlie B)


$arr2['A'] = array(7,9);
$arr3['B'] = array(7,9); // Perche' array 3 ????? 
$arr2['C'] = array(2,1);


$arr3['A'] = array(2,7,9);
$arr3['B'] = array(7,9); // hai ridefinito arr3[b] come sopra ripetizione o svista sopra ? 
$arr3['C'] = array(2,1);

$arr4['A'] = array(2,8);


// Qui mi fermo ....
// ma ti consiglio di usare opportunamente le funzioni array_diff etc... facendo cmq
// molt attenzione a come stai definendo il tutto ... che alla fine hai array di array 
// sono quasi delle matrici queste cose 

for($x=$x<=$x++){
    unset(
$tmpDiff);
    unset(
$tmpSum);
    if(!
is_array(${'arr'.$x}['B']))
        
$tmpSum = ${'arr'.$x}['A'];
    else{
        
array_unique(${'arr'.$x}['C']);
        
$tmpDiff array_diff(${'arr'.$x}['A'], ${'arr'.$x}['B']);
        
$tmpSum array_merge(${'arr'.$x}['C'], empty($tmpDiff) ? ${'arr'.$x}['A'] : $tmpDiff);
    }
    
array_unique($tmpSum);
    
sort($tmpSum);
    
$res[$x] = $tmpSum;
}

print 
"<pre>";
print_r($res);
print 
"</pre>"
grazie mille!!

edit: scusate ho corretto il codice che avevo copiato una porzione sbagliata