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: 429

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
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