在我的脚本中,我目前使用100多行代码定义为“0”
即
if ($var == "") {
$var = 0;
}
在PHP中有没有办法可以自动定义是否有什么东西将它的值设置为0? 我试过了
define('', '0');
但这没效果
背景:
这些“空”值正在从许多不同类型的API导入,如果用户分析不存在,则值将设置为“”。在图表/图表/表格中显示时会导致错误和中断。
没有将每个变量设置为“”(“如何导入”) - 我需要一种更快捷,更有效的方法。
以下是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;
}
答案 0 :(得分:1)
更新:
这应该适合你:
它抓住你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
!
答案 1 :(得分: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