2016-04-28 15 views
1

データが存在しない場合、配列の値をnullに設定するにはどうすればよいですか?続きPHP配列がnull値に設定される

はPHPから私の配列であると私は、JSONエンコードしています - 行の

{ 
    "title":"Impalz-Marketing", 
    "type":"Business Details", 
    "version":"1.0", 
    "login":[ ], 
    "business":{ 
     "1":{ 
     "details":{ }, 
     "messages":[ ], 
     "offers":[ ], 
     "events":[ ], 
     "milestone":[ ], 
     "products":[ ], 
     "brand_exp":[ ], 
     "reviews":[ ], 
     "agg_reviews":{ } 
     }, 
     "168":{ 
     "details":{ }, 
     "messages":[ ], 
     "products":[ ] 
     } 
    } 
} 

数は、ビジネスに不均一です。行が存在しない場合、どのようにデータをnullに設定できますか?私はこれを試してみた

$data = array(
     'title' => 'Impalz-Marketing', 
     'type' => 'Business Details', 
     'version' => '1.0', 
     'login' => $login_array, 
     'business' => $business_details_array 
); 

$business_details_array = array(); 
while($row = mysql_fetch_assoc($biz_list)) 
{ 
    $business_details_array[$row['id']]['details'] = $row; 
} 

    while($row = mysql_fetch_assoc($biz_milestone)) 
    { 
     if(!empty($row['id'])){ 
      $temp= explode(',', $row['path']); 
      if(count($temp) > 1) { 
       $row['path']= $temp; 
      } 
      $business_details_array[$row['business_id']]['milestone'][] = $row; 
     }else{ 
      $business_details_array[]['milestone'][] = null; // since no data exist their wont be any business_id 
     }  
    }  

私はこのような何かしたい -

{ 
    "title":"Impalz-Marketing", 
    "type":"Business Details", 
    "version":"1.0", 
    "login":[ ], 
    "business":{ 
     "1":{ 
     "details":{ }, 
     "messages":[ ], 
     "offers":[ ], 
     "events":[ ], 
     "milestone":[ ], 
     "products":[ ], 
     "brand_exp":[ ], 
     "reviews":[ ], 
     "agg_reviews":{ } 
     }, 
     "168":{ 
     "details":{ }, 
     "messages":[ ], 
     "offers": "null", 
     "events": "null", 
     "milestone": "null", 
     "products":[ ], 
     "brand_exp": "null", 
     "reviews": "null", 
     "agg_reviews": "null" 
     } 
    } 
} 
+0

配列を作成するコードをさらに投稿できますか? whileループの前に= nullビットを置く必要があるようです。あなたはどこかに格納されているビジネスIDを持っているべきです。 $ business_details_array [$ thisBusinessId] ['マイルストーン'] [] = null; – Brett

+0

私は 'business_id'ですべてのビジネスリストを取得しているコードを追加しました。さらにそれに応じて詳細をフィルタリングしています。 –

答えて

1

はあなたの最初の配列の作成に使用すると、設定することができ

$business_details_array = array(); 
while($row = mysql_fetch_assoc($biz_list)) 
{ 
    $business_details_array[$row['id']]['details'] = $row; 
    $business_details_array[$row['id']]['milestone'] = null; 
    $business_details_array[$row['id']]['products'] = null; 
    $business_details_array[$row['id']]['messages'] = null; 
} 

    while($row = mysql_fetch_assoc($biz_milestone)) 
    { 
     if(!empty($row['id'])){ 
      $temp= explode(',', $row['path']); 
      if(count($temp) > 1) { 
       $row['path']= $temp; 
      } 
      $business_details_array[$row['business_id']]['milestone'][] = $row; 
     }  
    } 
0

をヌルを追加します'ビジネスのためのデフォルトの初期配列s 'に設定し、その値をNULLに設定します。 し、DBからの配列をデフォルトのものにマージします。

$defaultBusinessVals = array(
     "details" => NULL, 
     "messages" => NULL, 
     "offers" => NULL, 
     "events" => NULL, 
     "milestone" => NULL, 
     "products" => NULL, 
     "brand_exp" => NULL, 
     "reviews" => NULL, 
     "agg_reviews" => NULL 
    ); 

DB配列は、この場合:

$dbArr = array(
     "details" => "no details", 
     "messages" => "my msg", 
     "offers" => 3, 
     ); 

、次いで結果は

なりDB

$res = $dbArr + $defaultBusinessVals; 

又は

$res = array_merge($defaultBusinessVals, $dbArr); 

からのデータをマージ3210

$res = array(
     "details" => "no details", 
     "messages" => "my msg", 
     "offers" => 3, 
     "events" => NULL, 
     "milestone" => NULL, 
     "products" => NULL, 
     "brand_exp" => NULL, 
     "reviews" => NULL, 
     "agg_reviews" => NULL 
    ); 
関連する問題