construire array cu chei si valori ordonate din 2 array-uri

Discutii despre script-uri si coduri PHP-MySQL, precum si lucru cu XML in PHP.
andras
Mesaje: 430

construire array cu chei si valori ordonate din 2 array-uri

Salut,
Am 2 array-uri, al doilea rezultind din $sql= 'SHOW COLUMNS FROM ore' :

Cod: Selectaţi tot

array ( 0 => array ( 0 => 'Anul', ), 1 => array ( 1 => 'Luna', ), 2 => array ( 2 => 'Ore lucratoare', ), )
respectiv (pseudocod);

Cod: Selectaţi tot

$sql= 'SHOW COLUMNS FROM ore' :
// array ( 0 => array ( 0 => 'anul', 'Field' => 'anul', 1 => 'int(5) unsigned', 'Type' => 'int(5) unsigned', 2 => 'NO', 'Null' => 'NO', 3 => '', 'Key' => '', 4 => NULL, 'Default' => NULL, 5 => '', 'Extra' => '', ), 1 => array ( 0 => 'luna', 'Field' => 'luna', 1 => 'int(5) unsigned', 'Type' => 'int(5) unsigned', 2 => 'NO', 'Null' => 'NO', 3 => '', 'Key' => '', 4 => NULL, 'Default' => NULL, 5 => '', 'Extra' => '', ), 2 => array ( 0 => 'oreluc', 'Field' => 'oreluc', 1 => 'int(5) unsigned', 'Type' => 'int(5) unsigned', 2 => 'NO', 'Null' => 'NO', 3 => '', 'Key' => '', 4 => NULL, 'Default' => NULL, 5 => '', 'Extra' => '', ), 3 => array ( 0 => 'aredoc', 'Field' => 'aredoc', 1 => 'tinyint(1) unsigned', 'Type' => 'tinyint(1) unsigned', 2 => 'YES', 'Null' => 'YES', 3 => '', 'Key' => '', 4 => '0', 'Default' => '0', 5 => '', 'Extra' => '', ), 4 => array ( 0 => 'userid', 'Field' => 'userid', 1 => 'int(11) unsigned', 'Type' => 'int(11) unsigned', 2 => 'NO', 'Null' => 'NO', 3 => '', 'Key' => '', 4 => NULL, 'Default' => NULL, 5 => '', 'Extra' => '', ), )array ( 0 => 'userid', 'Field' => 'userid', 1 => 'int(11) unsigned', 'Type' => 'int(11) unsigned', 2 => 'NO', 'Null' => 'NO', 3 => '', 'Key' => '', 4 => NULL, 'Default' => NULL, 5 => '', 'Extra' => '', )
Vreau sa fac al treilea array in care elemntul 0 din primul array (Anul) sa-l asociez cu elementul 0 din al doilea (anul), elementul 1 din primul (Luna) cu elementul 1 din al doilea (luna) s.a.m.d. deci sa-mi apara Anul=>anul, Luna=>luna etc.
Din al doilea array ma intereseaza numai numele cimpurilor (primele 3 sau sa le aleg in functie de variabila $i cind fac bucla). Cum fac asta? In comanda SHOW COLUMNS pot extrage doar cimpurile care ma intereseaza? Pentru simplificare. Multumesc.

MarPlo Mesaje: 4343
Salut
Pe codul dat de tine, se poate face acel array asa (cu indexul 'Field' sau 0 din al doilea array):

Cod: Selectaţi tot

$ar1 = array( 0 => array ( 0 => 'Anul', ), 1 => array ( 1 => 'Luna', ), 2 => array ( 2 => 'Ore lucratoare'));
$ar2 = array ( 0 => array ( 0 => 'anul', 'Field' => 'anul', 1 => 'int(5) unsigned', 'Type' => 'int(5) unsigned', 2 => 'NO', 'Null' => 'NO', 3 => '', 'Key' => '', 4 => NULL, 'Default' => NULL, 5 => '', 'Extra' => '', ), 1 => array ( 0 => 'luna', 'Field' => 'luna', 1 => 'int(5) unsigned', 'Type' => 'int(5) unsigned', 2 => 'NO', 'Null' => 'NO', 3 => '', 'Key' => '', 4 => NULL, 'Default' => NULL, 5 => '', 'Extra' => '', ), 2 => array ( 0 => 'oreluc', 'Field' => 'oreluc', 1 => 'int(5) unsigned', 'Type' => 'int(5) unsigned', 2 => 'NO', 'Null' => 'NO', 3 => '', 'Key' => '', 4 => NULL, 'Default' => NULL, 5 => '', 'Extra' => '', ), 3 => array ( 0 => 'aredoc', 'Field' => 'aredoc', 1 => 'tinyint(1) unsigned', 'Type' => 'tinyint(1) unsigned', 2 => 'YES', 'Null' => 'YES', 3 => '', 'Key' => '', 4 => '0', 'Default' => '0', 5 => '', 'Extra' => '', ), 4 => array ( 0 => 'userid', 'Field' => 'userid', 1 => 'int(11) unsigned', 'Type' => 'int(11) unsigned', 2 => 'NO', 'Null' => 'NO', 3 => '', 'Key' => '', 4 => NULL, 'Default' => NULL, 5 => '', 'Extra' => ''));
$ar3 =[];
$nr_a1 = count($ar1);
for($i=0; $i<$nr_a1; $i++){
  $ar3[$ar1[$i][$i]] = $ar2[$i]['Field'];
}

//check
var_export($ar3);
// array('Anul' => 'anul', 'Luna' => 'luna', 'Ore lucratoare' => 'oreluc') 
Daca vrei sa obtii doar numele coloanelor din tabelul mysql, fara alte date aditionale, poti sa iei numele lor din INFORMATION_SCHEMA, cu acest cod:

Cod: Selectaţi tot

SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA ='$nume_DB' AND TABLE_NAME='$nume_tabel'
Rezultat obtinut pe un test:

Cod: Selectaţi tot

COLUMN_NAME
-----------
id
site
menu
categ
links
descr
start_date

Subiecte similare