sterge element din array 2-dimensional dupa valoare
Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
-
andras
- Mesaje:430
sterge element din array 2-dimensional dupa valoare
Salut,
Am un array de forma:
Cod: Selectaţi tot
array ( 0 => array ( 0 => 'anul', 'COLUMN_NAME' => 'anul', ), 1 => array ( 0 => 'luna', 'COLUMN_NAME' => 'luna', ), 2 => array ( 0 => 'oreluc', 'COLUMN_NAME' => 'oreluc', ), 3 => array ( 0 => 'aredoc', 'COLUMN_NAME' => 'aredoc', ), 4 => array ( 0 => 'userid', 'COLUMN_NAME' => 'userid', ), )
Cum gasesc si cum sterg elementul cu valoare 'aredoc' sau alta valoare pe care o cer? Trebuie sa-l caut dupa valoare, mie nu-mi iese deccit daca il caut dupa cheie. Multumesc.
MarPlo
Mesaje:4343
Salut
Se parcurge array-ul cu for() /foreach() si se aplica unset() la ce vrei sa stergi.
Cod: Selectaţi tot
$ar = array(0 =>array ( 0 => 'anul', 'COLUMN_NAME' => 'anul'), 1=>array(0 => 'luna', 'COLUMN_NAME' => 'luna'), 2=>array(0 => 'oreluc', 'COLUMN_NAME' => 'oreluc'), 3=>array(0 => 'aredoc', 'COLUMN_NAME' => 'aredoc'), 4=>array(0 => 'userid', 'COLUMN_NAME' => 'userid'));
$nr_ar = count($ar);
for($i=0; $i<$nr_ar; $i++){
foreach($ar[$i] as $k=>$v){
if($v =='aredoc') unset($ar[$i]); //delete all the parent array
// unset($ar[$i][$k]); - to delete only the item/key with 'aredoc' value:
}
}
//check
var_export($ar);
// array(0 =>array ( 0 => 'anul', 'COLUMN_NAME' => 'anul'), 1=>array(0 => 'luna', 'COLUMN_NAME' => 'luna'), 2=>array(0 => 'oreluc', 'COLUMN_NAME' => 'oreluc'), 4=>array(0 => 'userid', 'COLUMN_NAME' => 'userid'))
andras
Mesaje:430
Multumesc, eu credeam ca exista functie de cautare dupa valoare. Dar e bine si asa.
MarPlo
Mesaje:4343
Se poate si mai profesional, sau "mai sofisticat", cu 2 functii daca e array 2-dimensional: array_search() [functie de cautare dupa valoare intr-un array simplu, returneaza cheia] si array_column() [returneaza valoarea unei coloane din array].
Cod: Selectaţi tot
$ar = array(0 =>array ( 0 => 'anul', 'COLUMN_NAME' => 'anul'), 1=>array(0 => 'luna', 'COLUMN_NAME' => 'luna'), 2=>array(0 => 'oreluc', 'COLUMN_NAME' => 'oreluc'), 3=>array(0 => 'aredoc', 'COLUMN_NAME' => 'aredoc'), 4=>array(0 => 'userid', 'COLUMN_NAME' => 'userid'));
//return the key of parent array with 'aredoc' value in index 0
$delk = array_search('aredoc', array_column($ar, 0)); //3
//del the item
unset($ar[$delk]);
//check
var_export($ar);
// array(0 =>array ( 0 => 'anul', 'COLUMN_NAME' => 'anul'), 1=>array(0 => 'luna', 'COLUMN_NAME' => 'luna'), 2=>array(0 => 'oreluc', 'COLUMN_NAME' => 'oreluc'), 4=>array(0 => 'userid', 'COLUMN_NAME' => 'userid'))
- Personal prefer prima varianta, cu for() /foreach(); stiu mai clar ce face. Eventual poti adauga intr-o functie creata de tine.
Subiecte similare
- parametru din array in query cu laravel
PHP - MySQL - XML
Primul mesaj
Salutare,
din frontend primesc urmatorul array:
$arrClienti =
dupa care ii fac implode
$idClienti = preg_replace('/ /i', '', implode( , ,...
Ultimul mesaj
Dupa multe sapaturi, am ajuns la concluzia ca nu se poate rula ca parametru o matrice. Doar daca parametrul cu matricea este rulat intr-un loop....
- Setare valori din array in select tag
JavaScript - jQuery - Ajax
Primul mesaj
Salut am un array cu orele de functionare
$data = array (
'0400' => '04:00 AM',
'0430' => '04:30 AM',
'0500' => '05:00 AM',
'0530'...
Ultimul mesaj
Testeaza urmatorul cod.
Daca ceva mai trebuie schimbat, incearca si tu sa modifici dupa cum stii, in functie de ce vrei sa obtii.
Open:...
- Indexi valorilor din array care fac suma
PHP - MySQL - XML
Primul mesaj
Salutare,
am un array cu urmatoarele numere:
arr =
si o variabila, care poate contine numere intregi de la 50 pana 750 (750 este suma...
Ultimul mesaj
Mulțumesc mult marplo, este ceea ce îmi trebuie
- implode(): Passing glue string after array is deprecated
PHP - MySQL - XML
Primul mesaj
Dupa 7 ani !
Acum, revazand o veche aplicatie cu codul Multiple Select Drop Down list cu tabel 3 coloane +1; am constatat ca datorita upgradarii...
Ultimul mesaj
OK ! Eu nu am inteles despre ce parametri era vorba. S-a rezolvat, multumesc pentru promptitudinea cu care mi-ai raspuns ! TOATE CELE BUNE !!!