2016-05-18 19 views
1

Ich habe ein mehrdimensionales Array wie dieseStandardisieren ein mehrdimensionales Array in PHP

Array 
(
[0] => Array 
    (
     ['key-A'] => 'val1' 
     ['key-B'] => 'val2' 
    ) 
[1] => Array 
    (
     ['key-A'] => 'val3' 
     ['key-C'] => 'val4' 
    ) 
[2] => Array 
    (
     ['key-B'] => 'val5' 
     ['key-C'] => 'val6' 
    ) 
) 

Wie würde ich ändern, um dies in ein mehrdimensionales Array, das so standardisiert ist, dass alle Schlüssel vorhanden waren und ein Nullwert eingegeben, wenn der Schlüssel war nicht anwesend?

z.

Array 
(
[0] => Array 
    (
     ['key-A'] => 'val1' 
     ['key-B'] => 'val2' 
     ['key-C'] => null 
    ) 
[1] => Array 
    (
     ['key-A'] => 'val3' 
     ['key-B'] => null 
     ['key-C'] => 'val4' 
    ) 
[2] => Array 
    (
     ['key-A'] => null 
     ['key-B'] => 'val5' 
     ['key-C'] => 'val6' 
    ) 
) 
+0

Sie müssen es manuell tun ... Ich habe nicht die Kenntnis von Bibliotheksfunktion. –

+0

versuche meine antwort Ich denke das was du erwartest – JYoThI

Antwort

2
<?php 
$arrays = [ 
    [ 
     'key-A' => 'val1', 
     'key-B' => 'val2', 
    ], 
    [ 
     'key-A' => 'val3', 
     'key-C' => 'val4', 
    ], 
    [ 
     'key-B' => 'val5', 
     'key-C' => 'val6', 
    ], 
]; 

// First build up a single array containing all the keys present 
$allKeys = []; 

foreach ($arrays as $array) 
{ 
    $allKeys = array_unique(array_merge(array_keys($array), $allKeys)); 
} 

// Then loop over the original array, merging the existing values into an array 
// containing all the known keys 
foreach ($arrays as &$array) 
{ 
    $array = array_merge(array_combine(
     $allKeys, 
     array_fill(0, count($allKeys), null) 
    ), $array); 
} 

print_r($arrays); 
-1
$array = array(
    [0] => array(
       ['key-A'] => 'val1' 
       ['key-B'] => 'val2' 
       ['key-C'] => null 
      ) 
    [1] => array(
       ['key-A'] => 'val3' 
       ['key-B'] => null 
       ['key-C'] => 'val4' 
      ) 
    [2] => array(
       ['key-A'] => null 
       ['key-B'] => 'val5' 
       ['key-C'] => 'val6' 
      )); 
1
<?php 

$input_array = [ 
    [ 
     "foo" => 1, 
     "bar" => 2 
    ], 
    [ 
     "baq" => 3, 
     "baz" => 4 
    ] 
]; 

$unique = []; 

foreach ($input_array as $row){ 
    foreach ($row as $k => $v){ 
     $unique[$k] = true; 
    } 
} 

foreach ($input_array as $iak => $row){ 
    foreach ($unique as $k => $v){ 
     if (!isset($row[$k])){ 
      $input_array[$iak][$k] = null; 
     } 
    } 
} 

var_dump($input_array); 
0

versuchen, dies mit Array Schlüsselfunktion vorhanden

<?php 

$ss= Array 
(
'0' => Array 
(
    'key-A' => 'val1', 
    'key-B' => 'val2' 
), 
'1' => Array 
(
    'key-A' => 'val3', 
    'key-C' => 'val4' 
), 
'2' => Array 
(
    'key-B' => 'val5', 
    'key-C' => 'val6' 
) 
); 

    print_r($ss); 

foreach($ss as $key=>$row) 
    { 

if(!array_key_exists('key-A',$row)) 
{ 

    $ss[$key]['key-A']='null'; 

} 

if(!array_key_exists('key-B',$row)) 
{ 

    $ss[$key]['key-B']='null'; 

} 

if(!array_key_exists('key-C',$row)) 
{ 

    $ss[$key]['key-C']='null'; 

} 



    } 

echo "<PRE>"; 
print_r($ss); 
0

diesem Code

$ss= Array 
(
'0' => Array 
(
    'key-A' => 'val1', 
    'key-B' => 'val2' 
), 
'1' => Array 
(
    'key-A' => 'val3', 
    'key-C' => 'val4' 
), 
'2' => Array 
(
    'key-B' => 'val5', 
    'key-C' => 'val6' 
) 
); 


$key = array("A","B","C"); 
$var = array(); 
foreach($ss as $k => $v) 
{ 
    foreach($key as $v2) 
    { 
     $var[$k]["key-{$v2}"] = isset($v["key-{$v2}"]) ? $v["key-{$v2}"] : "null"; 
    } 
} 

print_r($var); 

Sie erhalten folgendes Ergebnis Versuchen:

Array 
(
    [0] => Array 
     (
      [key-A] => val1 
      [key-B] => val2 
      [key-C] => null 
     ) 

    [1] => Array 
     (
      [key-A] => val3 
      [key-B] => null 
      [key-C] => val4 
     ) 

    [2] => Array 
     (
      [key-A] => null 
      [key-B] => val5 
      [key-C] => val6 
     ) 

)