2016-04-28 67 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 
    );