[PHP] eliminare elemento da un array multidimensionale

cosmo98

Nuovo Utente
29 Mag 2018
9
0
1
salve, ho il seguente array
PHP:
Array (
[0] => Array (
 [IDprodotto] => 10 [quantita] => 1
)
[1] => Array (
 [IDprodotto] => 1 [quantita] => 1
)
[2] => Array (
[IDprodotto] => 9 [quantita] => 3
)
[3] => Array (
[IDprodotto] => 17 [quantita] => 2
 )
[4] => Array (
[IDprodotto] => 1 [quantita] => 1
 )
 [5] => Array (
[IDprodotto] => 10 [quantita] => 1
) )

come faccio ad eliminare una riga dall'array dato un valore di IDprodotto ad esempio 9 passato tramite il metodo GET o POST?
Grazie in anticipo
 
Ultima modifica di un moderatore:

macus_adi

Utente Attivo
5 Dic 2017
1.333
91
48
IT/SW
PHP:
foreach($_POST as $k=>$v){
     if($v['IDprodotto']==9)unset($_POST[$k]);
}

$_POST=array_values($_POST);
 

cosmo98

Nuovo Utente
29 Mag 2018
9
0
1
PHP:
foreach($_POST as $k=>$v){
     if($v['IDprodotto']==9)unset($_POST[$k]);
}

$_POST=array_values($_POST);
ciao innanzitutto grazie per avermi risposto, ho provato a fare come mi hai suggerito ma non funziona. Nel frattempo ho provato a fare cosi:
PHP:
        foreach($prodotti as $k=>$v){
             if($v['IDprodotto']==$_GET['id'])
                //echo 'id presente nell array <br/><br/>';
                unset($v['IDprodotto']);
        }
ma nemmeno funziona. $prodotti nel foreach rappresenta l'array in questione
 

macus_adi

Utente Attivo
5 Dic 2017
1.333
91
48
IT/SW
Perchè non dovrebbe funzionare, forse hai sbagliato....
Ti allego un file per effettuare qualche prova...

PHP:
//elimina dall'array passato per riferimento un valore data una chiave
function elimina_elementi_array(&$ar,$value_delete=0,$key_delete='IDprodotto'){

    foreach ($ar as $k=>$v){
        if($v[$key_delete]==$value_delete)unset($ar[$k]);
    }
    $ar=array_values($ar);

}
//crea l'array prodotti
function create_array_prodotti(){
    $prd=[];
    for($i=0;$i<20;$i++){
        $prd[]=['IDprodotto'=>$i,'qta'=>rand(0,1000)];
    }
    return $prd;
}
//carico array prodotti
$prodotti=create_array_prodotti();
//elimino da prodotti il prodotto con ID 9
elimina_elementi_array($prodotti,9);
//stampo l'array
print_r($prodotti);

Questo non è altro che il codice di sopra.... sicuro che il tuo array sia formattato in questo modo?
 

cosmo98

Nuovo Utente
29 Mag 2018
9
0
1
aspetta forse non mi sono spiegato bene, quel 9 è un valore passato tramite GET o POST (al momento ho scelto GET), non è un valore fisso che sta sempre nell'array
 

cosmo98

Nuovo Utente
29 Mag 2018
9
0
1
rileggendo bene il secondo script che mi hai mandato adesso funziona, l'errore stava nel foreach del primo script che mi hai mandato: al posto di ciclare l'array andavi a ciclare $_POST
grazie per l'aiuto
 

macus_adi

Utente Attivo
5 Dic 2017
1.333
91
48
IT/SW
al posto di ciclare l'array andavi a ciclare $_POST
E quale variabile avrei dovuto ciclare se non la specifichi?
come faccio ad eliminare una riga dall'array dato un valore di IDprodotto ad esempio 9 passato tramite il metodo GET o POST?
Grazie in anticipo
Visto che non era specificato ho utilizzato la var POST... Quando inizi dei nuovi thread, se vuoi fare copia/incolla devi specificare le variabili utilizzate essendo il più preciso possibile, in mancanza di specifiche si utilizza un pò quello che si vuole in quel momento, e non si può dire che non funziona se si incolla in modo brutale senza leggere attentamente il codice...
 

cosmo98

Nuovo Utente
29 Mag 2018
9
0
1
secondo lo stesso array multidimensionale (dato dalla decodifica di un array JSON), come faccio a togliere i valori duplicati della colonna "IDprodotto" (ovvero il 10), rimanendo una sola colonna con IDprodotto=10 ma la quantita è la somma di tutte le righe con IDprodotto=10?

Ho fatto alcune prove solo che non riesco a sommare le quantita:
PHP:
$prodotti= json_decode($_COOKIE['acquisto'], true);
    echo 'array originale: <br/><br/>';
    print_r($prodotti);
    $tempArr = array_unique(array_column($prodotti, 'IDprodotto')); //converto prima l'array multi-dimensionale in mono-dimensionale
    $prodottinew= array_intersect_key($prodotti, $tempArr); //riconverto l'array in multi-dimensionale
    echo 'array senza duplicati: <br/><br/>';
    print_r($prodottinew);
 

macus_adi

Utente Attivo
5 Dic 2017
1.333
91
48
IT/SW
PHP:
function remove_duplicati(&$ar,$key_check='IDprodotto'){
    $exs=[];
    foreach ($ar as $k=>$v){
        if(!in_array($v[$key_check],$exs))$exs[]=$v[$key_check];
        else unset($ar[$k]);
    }
}
Funzione per rimuovere duplicati.... Devi passare l'array per riferimento ed elimina gli item duplicati secondo la key_check!!!
 
Discussioni simili
Autore Titolo Forum Risposte Data
S [PHP] Eliminare doppioni array e rinumerare le posizioni PHP 2
maxnegri Eliminare url index.php con variabili e reindirizzare alla home del sito PHP 7
maxnegri [PHP] Eliminare risultati duplicati da ciclo foreach ottenuti da una select php mysqli PHP 18
trattorino [PHP] Eliminare piu frasi PHP 1
C [PHP] RISOLTO - Eliminare elementi duplicati da array multidimensionale PHP 1
Monital [PHP] Eliminare la Barra di caricamento file alla fine dell'esecuzione PHP 11
asevenx [PHP] Eliminare record automaticamente dopo una certa data PHP 12
S Eliminare immagine tramite php PHP 14
S non riesco ad eliminare dei caratteri in PHP - Excel PHP 10
F eliminare post php / mysql PHP 5
F eliminare un record grazie a PHP PHP 11
V Eliminare dati da db mysql con php PHP 14
Couting95 inserire dati da un file di testo in una tabella in php PHP 1
P Data scraping in PHP non funziona PHP 4
C Calcoli matematici in php PHP 3
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 0
I dominio aruba versione php server linux Domini 3
G Colorare menu select attraverso ricerca php PHP 0
L PHP motore di ricerca nel sito PHP 1
S PHP e Mysqli PHP 0
Y Stampare da php su un foglio A6 attraverso una stampante esterna PHP 1
M Visulizzare immagine con php PHP 8
G [PHP] Creare script di prenotazione con controllo disponibilità. PHP 7
G leggere file txt e stampare con php il contenuto a video PHP 7
F Ricreare struttura php+mysql su Xampp Apache 0
Z PHP.INI - STMP per invio email con PHP Server Dedicati e VPS 0
M Array associativi php su 2 campi mysql PHP 10
G Invio form con PHP PHP 3
T fatture con voci fattura in php PHP 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
M Collegamento tra form html e script php PHP 4
M Problemi con la stampa dei valori in php PHP 1
W [Cerco collaborazioni] Sviluppatore Web (PHP) Offerte e Richieste di Lavoro e/o Collaborazione 1
D passare valori da database sql a php PHP 1
L Ricezione dei dati su file php da modulo html PHP 6
E Inviare variabile a PHP da ciclo in JS Javascript 0
A form PHP prenotazione tramite query PHP 2
A Form php prenotazione di un azienda sanitaria locale presso studio medico PHP 1
F menù select dinamico da db in php PHP 3
L Problemi form Pagina php HTML e CSS 3
L php mysql non salva solo id PHP 21
L php mysql cerca e visualizza pagina PHP 0
F Il codice php è giusto? PHP 2
R Aggiornare record mysql con Ajax, jQuery e php Ajax 2
A invio massivo dati a file php Javascript 4
Z MySql injection PHP PHP 1
V PHP form intersecate PHP 0
I [Offro][Retribuito] Programmatore Php Offerte e Richieste di Lavoro e/o Collaborazione 0
P Funzione jQuery Ajax invio file a php jQuery 1

Discussioni simili