2017-02-03 17 views
1

かなり悪いタイトルは残念ですが、私はネイティブスピーカーではなく、これをどのようにフレーズするかわかりませんでした。特定のフィルタリングで配列から一意の値を取得

$newArray = array(
    'key1' => array(
     'value1' => '1', 
     'value2' => '0', 
     'value3' => '1' 
    ), 
    'key2' => array(
     'value1' => '0', 
     'value2' => '0' 
    ), 
    'key3' => array(
     'value1' => '1' 
    ) 
); 
:、私はこのフォーマットで別のものを取得したいと思い

$array = array(
    'key1.value1' => '1', 
    'key1.value2' => '0', 
    'key1.value3' => '1', 
    'key2.value1' => '0', 
    'key2.value2' => '0', 
    'key3.value1' => '1' 
); 

この配列から:私はこのフォーマットと非常に長い配列を持つ

:ここ

は私の問題です

私はいくつかの方法を試しましたが、実際にはそれほど長くはない解決策を見つけられなかったので、これを簡単に行うためのヒント/トリックがあれば疑問に思った!

ありがとうございます!

+0

;' – Laurence

答えて

1
$array = array(
    'key1.value1' => '1', 
    'key1.value2' => '0', 
    'key1.value3' => '1', 
    'key2.value1' => '0', 
    'key2.value2' => '0', 
    'key3.value1' => '1' 
); 

$Results = array(); 
foreach($array as $key=>$value){ 
    $KeyValue = explode(".",$key); 
    if(!isset($Results[$KeyValue[0]])){ 
     $Results[$KeyValue[0]] = array(); 
    } 
    $Results[$KeyValue[0]][end($KeyValue)] = $value; 
} 
print_r($Results); 
+0

私は唯一のことがわかりました。

$transformed = []; foreach ($array as $k => $v) { $pair = explode('.', $k); $transformed[$pair[0]][$pair[1]] = $v; } print_r($transformed); 

出力を1秒のレベルを作成しますか?になり得る? –

+1

@ÁlvaroTouzónこれは彼が必要とするフォーマットにチャプチャを与えるはずです。 – JustBaron

+0

完璧に動作します!どうもありがとう! – Fawak

0

これを試してみてください。

$generate = []; 
foreach($array as $key=>$val){ 
list($first, $second) = split('.', $key); 
if(!isset($genrate[$first]){ 
$genrate[$first] = []; 
if(!$genrate[$first][$second]){ 
$genrate[$first][$second]= []; 
} 
} 
$genrate[$first][$second] = $val; 
} 

は、それが役立ちます期待しています。 TKS

+0

$ valまたは$ valueを変更する必要があります – JustBaron

0

ショートソリューションをexplode()機能使用:あなたは `in_array(文字列、$配列)を使用しようとすることができ

Array 
(
    [key1] => Array 
     (
      [value1] => 1 
      [value2] => 0 
      [value3] => 1 
     ) 

    [key2] => Array 
     (
      [value1] => 0 
      [value2] => 0 
     ) 

    [key3] => Array 
     (
      [value1] => 1 
     ) 
) 
関連する問題