PHP array of strings seperated in columns to associative array -


this question has answer here:

i have unix disk output want convert associated array each line user can pick available disks use next vg creation.

output of current array item. there 1 white space between each column did tab's easier read.

array(11) {  [0]=> string(141) "vg1              lvm  136g   /dev/cciss/c0d0p2        n/a                               n/a       local n/a  n/a     no "  [1]=> string(141) "vg2              lvm  1g     /dev/mapper/mpath28p1   60060e80166fa70000016fa700000013 /dev/dm-33 r700    ls1000  0013    yes "  [2]=> string(141) "vg3              lvm  60g    /dev/mapper/mpath27p1 60060e80166fa70000016fa700000012 /dev/dm-34 r700  ls1000  0012    yes "  [3]=> string(141) "vg4              lvm  60g    /dev/mapper/mpath29p1 60060e80166fa70000016fa700000014 /dev/dm-35 r700  ls1000  0014    no "  [4]=> string(141) "***available***  free 2g     /dev/mapper/mpath21p1 60060e80167220000001722000000048 /dev/dm-37 r700  ls2000  0048    yes "  [5]=> string(141) "***available***  free 2g     /dev/mapper/mpath22p1 60060e80167220000001722000000049 /dev/dm-36 r700  ls2000  0049    yes "  [6]=> string(141) "***available***  free 90g    /dev/mapper/mpath23p1 60060e80166fa70000016fa70000000e /dev/dm-31 r700  ls1000  000e    yes "  [7]=> string(141) "***available***  free 90g    /dev/mapper/mpath24p1 60060e80166fa70000016fa70000000f /dev/dm-39 r700  ls1000  000f    yes "  [8]=> string(141) "***available***  free 90g    /dev/mapper/mpath25p1 60060e80166fa70000016fa700000010 /dev/dm-30 r700  ls1000  0010    yes "  [9]=> string(141) "***available***  free 90g    /dev/mapper/mpath26p1 60060e80166fa70000016fa700000011 /dev/dm-32 r700  ls1000  0011    yes "  [10]=> string(141) "***available*** free 2g     /dev/mapper/mpath30p1 60060e80167220000001722000000047 /dev/dm-38 r700  ls2000  0047    yes "  

i want end this. i've been trying different foreach loops haven't got work yet. help/suggestions appreciated.

[0] => name=>vg1 type=>lvm lun_size=>136g  mpath_name=>/dev/cciss/c0d0p2  flun_id=>n/a  dm_name=>n/a  array_type=>local  array_name=>n/a  lun_id=>n/a  shared=>no [1] => name=>vg2 type=>lvm lun_size=>1g  mpath_name=>//dev/mapper/mpath28p1  flun_id=>60060e80166fa70000016fa700000013  dm_name=>/dev/dm-33  array_type=>r700  array_name=>ls1000  lun_id=>0013  shared=>no [2] => ....etc 

thanks

the solution is:

  • loop through original array elements
  • use explode() function split string
  • store elements in (key,value) pair in temporary array
  • push temporary array @ appropriate position in original array.

so code should this:

// suppose $arr original array $arrlength = count($arr); for($i = 0; $i < $arrlength; ++$i){     $component_arr = explode(" ", $arr[$i]);     $tmp_arr = array();     $tmp_arr['name'] = $component_arr[0];     $tmp_arr['type'] = $component_arr[1];     $tmp_arr['lun_size'] = $component_arr[2];     $tmp_arr['mpath_name'] = $component_arr[3];     $tmp_arr['flun_id'] = $component_arr[4];     $tmp_arr['dm_name'] = $component_arr[5];     $tmp_arr['array_type'] = $component_arr[6];     $tmp_arr['array_name'] = $component_arr[7];     $tmp_arr['lun_id'] = $component_arr[8];     $tmp_arr['shared'] = $component_arr[9];      unset($arr[$i]);     $arr[$i] = $tmp_arr; }  // display $arr array var_dump($arr); 

Comments

Popular posts from this blog

authentication - Mongodb revoke acccess to connect test database -

r - Update two sets of radiobuttons reactively - shiny -

ios - Realm over CoreData should I use NSFetchedResultController or a Dictionary? -