2016-04-28 326 views
1

如果沒有數據存在,如何將數組值設置爲nullPHP數組設置空值

以下是我的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位。您應該將商業標識存儲在某個地方。 $ business_details_array [$ thisBusinessId] ['milestone'] [] = 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

你可以設置'busines的默認初始數組s'並將其值設置爲NULL。 ,然後將數組中的數組合併到默認數組中。

$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); 

其結果將是

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