我可以定义“";(无)作为“;0”;在整个PHP脚本中


Can i define "" (Nothing) as "0" in Throughout The WHOLE PHP Script?

在我的脚本中,我目前使用了100多行代码,没有将任何内容定义为"0"

I.e

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

在PHP中,有没有一种方法可以让我自动定义,如果什么都没有,就把它的值设置为0?我试过

define('', '0');

但这并没有起到的作用

背景:

这些"空"值是从许多不同类型的API导入的,如果用户分析不存在,则这些值将设置为"。在图形/图表/表格中显示时,会导致错误和中断。

不需要将每个变量都设置为"中的"0"(如何导入),我需要一个更快、更高效的方法。

以下是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;
}

更新:

这应该对你有用:

它会获取skript中的所有变量!并检查它们是否为空,如果是,则用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

没有办法避免实际更改值。你对速度的担忧是没有根据的,但我怀疑你真正担心的是你将不得不编写的额外代码的数量。在这种情况下,我会重新考虑几种方法。

如果您不想要任何空字符串,您可以使用array_walk_recurative:一次性解析返回的数据

$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