1

次のような配列があります。

Array ( 
    [A] => Array ( 
             [y] => 2014-11-26 
             [x] => 1 
             [zzz] => 2 
             [ww] => 1 ) 
    [B] => Array ( 
             [y] => 2014-11-27 
             [zzz] => 2 ) 
    [C] => Array ( 
             [y] => 2014-11-29 
             [ww] => 2 ) 
 ) 

サブ配列 'A' には 4 つの要素がありますが、他のサブ配列には 2 つの要素しかありません。次のように新しい配列を取得できるように、値 0 の配列 A の同じ要素で他のサブ配列を埋めたいと思います。

Array ( 
    [A] => Array ( 
             [y] => 2014-11-26 
             [x] => 1 
             [zzz] => 2 
             [ww] => 1 ) 
    [B] => Array ( 
             [y] => 2014-11-27 
             [x] => 0
             [zzz] => 2 
             [ww] => 0 ) 
    [C] => Array ( 
             [y] => 2014-11-29 
             [x] => 0
             [zzz] => 0 
             [ww] => 2 ) 
 ) 

以下は私のアルゴリズムです。私はジュニア開発者なので、もっと学ぶためにより良いアルゴリズムを探しています。

    $allArrayKey = array_keys($array); 

    $mostElement[0] = 0;
    foreach($allArrayKey as $value) {

        if($mostElement[0] < count($array[$value])) {
            $mostElement[0] = count($array[$value]);
        }

    }

    foreach($allArrayKey as $arr) {           
        if(count($array[$arr]) < $mostElement[0]) {
            foreach ($allArrayKey as $xx) {
                if(!array_key_exists($xx, $array[$arr])) {
                    $array[$arr][$xx] = '0';
                }
            } 
        }
    }

PHPでそれを行うにはどうすればよいですか?

4

2 に答える 2

0

だから私が言ったように、配列Aからすべてのキーを取得します:

$keys = array_keys($array['A']);

$keys はすべてのキーを持つ配列になりました。あとは、配列全体をループし、キーをループして存在するかどうかを確認するだけです。

foreach($array as &$arr){
    foreach($keys as $key){
        if(!array_key_exists($key, $arr)){
            $arr[$key] = 0;
        }
    }
}
于 2014-11-28T09:45:05.637 に答える