在我的脚本中,我目前使用了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