2014-11-05 59 views
-2

在我的劇本我目前使用的100多個行代碼定義什麼是「0」我可以在整個PHP腳本中定義「」(Nothing)爲「0」嗎?

if ($var == "") { 
    $var = 0; 
} 

是否有PHP的路要走,如果任何事情都是沒有設置它的價值,我可以自動定義爲0? 我試過

define('', '0'); 

但是,這沒有奏效

背景:

這些「空」的價值觀正在從許多不同類型的API的進口,如果用戶分析不存在,值被設置爲「」。在圖表/圖表/表格中顯示時,會導致錯誤和中斷。如果沒有設置每個變量爲「0」from「」(它是如何導入的) - 我需要一個更快,更有效的方法。

這裏的API調用之一:

// January 
    $janViews = file_get_contents('https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date='.$jan.'&end-date='.$feb.'&&metrics=views%2Clikes%2CsubscribersGained%2Ccomments&access_token='.$_SESSION['authcode']); 
    $jsonJan = json_decode($janViews); 
    $monthlyViewsJan = $jsonJan->rows[0][0]; 
    $monthlyLikesJan = $jsonJan->rows[0][1]; 
    $monthlySubsJan = $jsonJan->rows[0][2]; 
    $monthlyCommentsJan = $jsonJan->rows[0][3]; 

上面的代碼被要求12次(每月)。這是每個月的驗證。

if ($monthlyViewsJan == "") { 
    $monthlyViewsJan = 0; 
} 
if ($monthlySubsJan == "") { 
    $monthlySubsJan = 0; 
} 
if ($monthlyCommentsJan == "") { 
    $monthlyCommentsJan = 0; 
} 
if ($monthlyLikesJan == "") { 
    $monthlyLikesJan = 0; 
} 
+6

我的頭轉過身 – 2014-11-05 22:44:54

+0

爲什麼你需要這樣做?這些變量如何被設置爲第一位的空字符串? – Steve 2014-11-05 22:53:14

+0

更新後的@Steve – Typeconor 2014-11-05 22:59:53

回答

0

那麼有沒有辦法避免實際改變值。您對速度的擔憂是毫無根據的,但我懷疑您真正擔心的是您必須編寫的額外代碼數量。在這種情況下,我會推薦幾種方法。

如果你不想任何空字符串,你可以用array_walk_recursive解析一氣呵成返回的數據:

$jsonJan = json_decode(file_get_contents('https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date='.$jan.'&end-date='.$feb.'&&metrics=views%2Clikes%2CsubscribersGained%2Ccomments&access_token='.$_SESSION['authcode'])); 

array_walk_recursive($jsonJan, function(&item, $key){ 
    $item = empty($item) ? 0 : $item; 
}); 

$monthlyViewsJan = $jsonJan->rows[0][0]; //will be value or 0 

如果你不能做到這一點,而不是存儲所有你的變量到一個數組:

$data=[] 
$jsonJan = json_decode(file_get_contents('https://www.googleapis.com/youtube/analytics/v1/reports?ids=channel%3D%3DMINE&start-date='.$jan.'&end-date='.$feb.'&&metrics=views%2Clikes%2CsubscribersGained%2Ccomments&access_token='.$_SESSION['authcode'])); 
$data=['monthlyViewsJan'] = $jsonJan->rows[0][0]; 
$data=['monthlyLikesJan'] = $jsonJan->rows[0][1]; 
$data=['monthlySubsJan'] = $jsonJan->rows[0][2]; 
$data=['monthlyCommentsJan'] = $jsonJan->rows[0][3]; 
//all your other api calls, storing into data 

//change empty strings for 0 
foreach($data as &$item) 
    $item = empty($item) ? 0 : $item; 
//extract data array back into individual variables 
extract($data); 
//test 
echo $monthlyViewsJan; //outputs value or 0 
1

UPDATE:

這應該爲你工作:

它吸引所有變量在skript!並檢查他們是否是空的任何果真如此的話assgin它與0

<?php 

    $test1 = ""; 
    $test2 = ""; 
    $test3 = ""; 
    $test4 = "test"; 

    $arr1 = get_defined_vars(); 

    foreach ($arr1 as $k => $v) { 

     if(!is_array($arr1[$k]) && $$k == "") 
      $$k = 0; 
    } 

    echo $test1 . "<br />"; 
    echo $test2 . "<br />"; 
    echo $test3 . "<br />"; 
    echo $test4 . "<br />"; 


?> 

輸出:

0 
0 
0 
test 

此外,如果你使用你的define();定義constant不是variable

+0

這並不回答我的問題。我仍然需要寫出這100多次來驗證我的不同變量。我希望在我的文檔中存在的EVERY變量的值爲「0」 – Typeconor 2014-11-05 22:48:53

+0

@Typeconor只是在初始化變量時以0代替「」!不,你不能說你的腳本,所有的變量值「0」應該是0 – Rizier123 2014-11-05 22:50:09

+0

你在小便?我沒有定義變量。他們是通過谷歌OAuth 2.0導入的空變量 – Typeconor 2014-11-05 22:52:11

相關問題