2016-08-01 11 views
2

ここでは本当に助けていただきたいと思います。私はこれについてナッツをしています。新しいキーを追加しながらループトラフをループする:別の値に基づく値のペア

私は、この値に私が上で実行するたびに1を加算しながら、マルチレベル内部の次のデータが

1: id: 41, parent: null, name: lucas 
2: id: 52, parent: null, name: george 
3: id 98: parent: 41, name: julian 
... 

をarrarray私はこの配列と親に'childrens'キーと値をループする必要があります持っています'parent'がnullに設定されていないエントリ。これを達成する方法は?インデックス['childrens']が存在しないため、

1: id: 41, parent: null, name: lucas, children: 1 

私はもちろんforeach

foreach($post as $parsedPost) { 
    if($parsedPost['parent'] > 0){ 
     $idChild = $parsedPost['id']; 
     $idParent = $parsedPost['parent']; 
     $post[$idParent]["childrens"]++; 
    } 
} 

の内側にこれを試してみました、それは通知を返します。また、最初の子にはchildrens:valueが追加され、親には追加されません。 なぜですか? D:

+0

この '$ idPai'が来たどこから? – Saurabh

+0

申し訳ありません@Saurabhは$ idParentであるはずですが、私は投稿する前にvar名を翻訳して、この名前を忘れました。 EDIT:通知を取り除くために –

+0

が修正されました。add($ post [$ idParent] ['childrens']){$ post [$ idParent] ['childrens'] = 0; } 'インクリメントを含む行の前に。 – olegsv

答えて

1

これは役に立ちます。

$post[] = ["id" => "41", "parent" => null, "name" => "lucas"]; 
$post[] = ["id" => "52", "parent" => null, "name" => "george"]; 
$post[] = ["id" => "98", "parent" => "41", "name" => "Julian"]; 

foreach ($post as $parsedPost) 
{ 
    if ($parsedPost['parent'] > 0 && $parsedPost['parent'] != "") 
    { 
     $idChild = $parsedPost['id']; 
     $idParent = $parsedPost['parent']; 
     $parentKey = array_search($idParent,array_column($post,'id')); 
     if(!isset($post[$parentKey]["childrens"])) 
     { 
      $post[$parentKey]["childrens"] = 0; 
     } 
     $post[$parentKey]["childrens"]++; 
    } 
} 
print_r($post); 

出力:

Array 
(
    [0] => Array 
     (
      [id] => 41 
      [parent] => 
      [name] => lucas 
      [childrens] => 1 
     ) 

    [1] => Array 
     (
      [id] => 52 
      [parent] => 
      [name] => george 
     ) 

    [2] => Array 
     (
      [id] => 98 
      [parent] => 41 
      [name] => Julian 
     ) 

) 
+0

あなたのコードは動作します、ありがとう!しかし、それは子供がいるすべてのエントリについて1人の子供をスキップしています。なぜなのかご存知ですか? –

+0

私はあなたがもっと詳しく説明することができませんでしたか? – Saurabh

+0

'私のデータベースのエントリ1には6人の子供がいて、あなたのスクリプトは6人の子供を計算します。 ' '私のデータベースのエントリ2には3人の子供がいて、あなたのスクリプトは2人の子供を計算します。'D:助けてください –

関連する問題