Restructurare array cu array_map si array_combine

PEAR, Smarty, ADOdb, OOP, PHP 5, XML, UML, Şabloane de proiectare, PHP-GTK.

Moderatori: coditza, Emil, Moderatori

Avatar utilizator
eAndy
PHPRomania Supporter
Mesaje: 14
Membru din: Mar Mar 16, 2010 5:21 pm
Localitate: Slatina
Contact:

Restructurare array cu array_map si array_combine

Mesajde eAndy » Joi Iun 19, 2014 7:29 pm

Salut !

Se da urmatorul array:

Cod: Selectaţi tot

Array
(
    [nume] => Array
        (
            [0] => Link1
            [1] => Link2
            [2] => Link3
            [3] => Link4
        )

    [clasa] => Array
        (
            [0] => green
            [1] => yellow
            [2] => red
            [3] => blue
        )

    [href] => Array
        (
            [0] => link1.php
            [1] => link2.php
            [2] => link3.php
            [3] => link4.php
        )
)

care, pentru a putea fi utilizat va trebui sa aiba urmatoarea structura:

Cod: Selectaţi tot

Array
(
    [0] => Array
        (
            [nume] => Link1
            [clasa] => green
            [href] => link1.php
        )

    [1] => Array
        (
            [nume] => Link2
            [clasa] => yellow
            [href] => link2.php
        )

    [2] => Array
        (
            [nume] => Link3
            [clasa] => red
            [href] => link3.php
        )

    [3] => Array
        (
            [nume] => Link4
            [clasa] => blue
            [href] => link4.php
        )
)


Am obtinut structura dorita, astfel:

Cod: Selectaţi tot

$keys = array_keys($Array);

array_unshift($Array, null);
$map = call_user_func_array('array_map', $Array);

for ($m = 0; $m < count($map); $m++) {
    $newarr[] = array_combine($keys, $map[$m]);
}


Exista vreo solutie mai eficienta decat cea implementata de mine ?
Multumesc



MarPlo
Senior Member
Mesaje: 884
Membru din: Mie Sep 24, 2008 9:32 am
Localitate: Braila
Contact:

Re: Restructurare array cu array_map si array_combine

Mesajde MarPlo » Vin Iun 20, 2014 8:24 pm

Salut
Uite o solutie simpla si rapida:

Cod: Selectaţi tot

$arr = array(
  'nume' => array('Link1', 'Link2', 'Link3', 'Link4'),
  'clasa' => array('green', 'yellow', 'red', 'blue'),
  'href' => array('link1.php', 'link2.php', 'link3.php', 'link4.php')
);
$arr2 = array();
foreach(
$arr as $k=>$va) {
  $nr_av = count($va);
  for($i=0; $i<$nr_av; $i++) {
    $arr2[$i][$k] = $va[$i];
  }
}

// Test
var_export($arr2);
/*
array(
  0=>array('nume'=>'Link1', 'clasa'=>'green', 'href'=>'link1.php'),
  1=>array( 'nume'=>'Link2', 'clasa'=>'yellow', 'href'=>'link2.php'),
  2=>array( 'nume'=>'Link3', 'clasa'=>'red', 'href'=>'link3.php'),
  3=>array( 'nume'=>'Link4', 'clasa'=>'blue', 'href'=>'link4.php')
)
*/
 

Avatar utilizator
eAndy
PHPRomania Supporter
Mesaje: 14
Membru din: Mar Mar 16, 2010 5:21 pm
Localitate: Slatina
Contact:

Re: Restructurare array cu array_map si array_combine

Mesajde eAndy » Vin Iun 20, 2014 11:10 pm

@MarPlo, jos palaria ! Multumesc pentru ajutor.


Înapoi la “PHP Avansat”

Cine este conectat

Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 3 vizitatori