Basit bir dizi çok-boyutlu bir dizi karşılaştırmak ve fark ayıklamak

0 Cevap php

Ben bir dizi gönderir $ 'POST ettik. Ve ben bir prevoious dizi teh $ _POST gelen değerlerden birini içeren ya da değil, bir anahtar içerir ettik.

Örneğin:

$_post: Array ( [0] => 13 [1] => 10 [2] => 52) 
Previous: Array ( [0] => Array ( [collection_id] => 13 [artwork_id] => 21 ) 
                  [1] => Array ( [collection_id] => 11 [artwork_id] => 21 ) ) 

Yani ben $ _POST itms zaten previuos dizi ([collection_id] tuşu) olup olmadığını kontrol edin ve yenilerini ayıklamak (bu durumda [1] => 10 [2] => 52) veritabanına eklediğiniz için ve de bu almak gerekir hangi yeni değerler tarafından veritabanından (ikame) kaldırılması için bu ihtiyacı değişti.

Bu benim geçerli kod ama iyi çalışmıyor ...

            $new_nodes = array();

            $i = 0;
            foreach($old_nodes as $node){
                foreach ($collections as $collection) {
                    $new = array('collection_id' => $collection, 'artwork_id' => $artwork['id']);
                    if(array_diff($node, $new)){
                        if($collection > 0){
                            array_push($new_nodes, $new);
                        }
                    }
                    else{
                        unset($old_nodes[$i]);
                    }
                }
                $i++;
            }


            foreach($new_nodes as $node){
                for ($i = 0; $i <= count($new_nodes); $i++) {
                    if(isset($new_nodes[$i])){
                        if(!array_diff($node, $new_nodes[$i])){
                            unset($new_nodes[$i]);
                        }
                    }
                }
            }

NOT: old_nodes "Önceki" ve $ koleksiyonları "$ _POST" dir

0 Cevap