[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.343
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.343
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.343
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.343
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
F Cerco Hosting con VECCHIE versioni di php Hosting 0
Cosina Captcha php PHP 1
S passare un valore da un form a un file .php con metodo post PHP 4
N php msyql PHP 6
N php problemi a visualizzare video PHP 3
A menu a tendina php PHP 1
D protezione cartelle: blocco visualizzazione/scaricamento contenuto, ma abilitazione utilizzo dati da parte di file .php presenti sul sito Web Server 1
F Php date_diff PHP 1
K [PHP] Aggiungere caratteri ad una stringa in base alla lunghezza della stessa PHP 2
C Wp-admin a file php WordPress 5
Lino80 [Retribuito] Cerco programmatore php per modifica/inserimento funzione/valori da un plugin importer wordpress Offerte e Richieste di Lavoro e/o Collaborazione 0
csi Inviare file jpg in locale alla stampante con php PHP 0
M Passaggio variabili array php su un tasto jq PHP 3
E Php aggiornamento tabella PHP 9
G phpmailer e php 8.1 con estensione mysqli PHP 6
M Invio dati database via email php PHP 0
K [php] Problema con inner join PHP 4
K [php]form invio dati PHP 0
P Codifica caratteri speciali mysql php PHP 0
K [PHP] Problema con variabili concatenate. PHP 1
E Stampante termica escpos-php PHP 6
JeiMax Modifica codice php personalizzato PHP 2
G Come modificare un pdf in php PHP 1
U Link a doppio file PHP PHP 0
E PHP & jQuery PHP 8
N Passare array da php a javascript PHP 5
F Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili PHP 20
L tipo boolean non funzionante su mariadb (mysql). E codice php 7.4. PHP 0
U PHP creare un file excel dopo ricerca nel DB PHP 0
M PHP/MySQL - Estrarre valori min e max di ogni gruppo PHP 5
F Php e fatturazione elettronica PHP 0
P lanciare script asp (o php) da jquery Javascript 1
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 5
F Scrivere dei dati in word con php PHP 0
D PHP leggere cartella di Windows PHP 1
I dominio aruba versione php server linux Domini 3

Discussioni simili