循环变量和函数名称 php
loop variable and function names php
假设我有一个 php 文件。
在其中,我有一些变量和一些函数。例如:
$results = getResults($analytics, $profile);
printResults($results);
function getResults($analytics, $profileId) {
return $analytics->data_ga->get(
'ga:' . $profileId,
'3daysAgo',
'2daysAgo',
'ga:sessions');
}
和
function printResults($results) {
if (count($results->getRows()) > 0) {
$profileName = $result->getProfileInfo()->getProfileName();
$rows = $results->getRows();
$sessions = $rows[0][0];
// Print the results.
print $sessions;
} else {
print "No results found.\n";
}
}
现在,我如何循环遍历这些,动态更改变量和函数名称?
所以(伪代码,希望清楚它正在尝试做什么)
for($i=2; $i<30; $i++){
$results = $results$i = getResults$i($analytics, $profile);
printResults$i($results$i);
function getResults$i($analytics, $profileId){
return $analytics->data_ga->get(
'ga:' . $profileId,
$i'daysAgo',
($i+1)'daysAgo,
'ga:sessions');
}
}
表示$results
变成$results2
、$results3
等
和
getResults()
变为 getResults2()
、getResults3()
等
和
'3daysAgo
' 变为 4daysAgo
、5daysAgo
等
可以吗?
我会使用数组来存储结果:
$results_array = array();
然后我们可以使用一组函数参数来传递(只是作为示例 - 不是您的脚本):
$data = array(
'one' => array('param1' => $some_data, 'param2' => $some_other_data),
'two' => array('param1' => $more_data, 'param2' => $some_more_data),
);
foreach ($data as $k => $v)
{
$results_array[] = my_fnc_name($v['param1'], $v['param2']);
}
这会将函数 return 的值添加(通过数字索引)到 $results_array
您可以使用此 function 更改变量名称:
function get_var_name($var) {
foreach($GLOBALS as $var_name => $value) {
if ($value === $var) {
return $var_name;
}
}
return false;
}
如果你想用$request1
改变变量名$request
你可以这样做:
${get_var_name($request).'1'} = $request;
如果您想动态创建函数:
$function = create_function("/* comma separated arguments*/", "/*code as string*/);
并称它为:
$function();
#使用lambda函数
$printResults$i= function($analytics, $profile) {
//perform your logic
};
call_user_func_array($printResults$i, array($analytics, $profile));
假设我有一个 php 文件。 在其中,我有一些变量和一些函数。例如:
$results = getResults($analytics, $profile);
printResults($results);
function getResults($analytics, $profileId) {
return $analytics->data_ga->get(
'ga:' . $profileId,
'3daysAgo',
'2daysAgo',
'ga:sessions');
}
和
function printResults($results) {
if (count($results->getRows()) > 0) {
$profileName = $result->getProfileInfo()->getProfileName();
$rows = $results->getRows();
$sessions = $rows[0][0];
// Print the results.
print $sessions;
} else {
print "No results found.\n";
}
}
现在,我如何循环遍历这些,动态更改变量和函数名称?
所以(伪代码,希望清楚它正在尝试做什么)
for($i=2; $i<30; $i++){
$results = $results$i = getResults$i($analytics, $profile);
printResults$i($results$i);
function getResults$i($analytics, $profileId){
return $analytics->data_ga->get(
'ga:' . $profileId,
$i'daysAgo',
($i+1)'daysAgo,
'ga:sessions');
}
}
表示$results
变成$results2
、$results3
等
和
getResults()
变为 getResults2()
、getResults3()
等
和
'3daysAgo
' 变为 4daysAgo
、5daysAgo
等
可以吗?
我会使用数组来存储结果:
$results_array = array();
然后我们可以使用一组函数参数来传递(只是作为示例 - 不是您的脚本):
$data = array(
'one' => array('param1' => $some_data, 'param2' => $some_other_data),
'two' => array('param1' => $more_data, 'param2' => $some_more_data),
);
foreach ($data as $k => $v)
{
$results_array[] = my_fnc_name($v['param1'], $v['param2']);
}
这会将函数 return 的值添加(通过数字索引)到 $results_array
您可以使用此 function 更改变量名称:
function get_var_name($var) {
foreach($GLOBALS as $var_name => $value) {
if ($value === $var) {
return $var_name;
}
}
return false;
}
如果你想用$request1
改变变量名$request
你可以这样做:
${get_var_name($request).'1'} = $request;
如果您想动态创建函数:
$function = create_function("/* comma separated arguments*/", "/*code as string*/);
并称它为:
$function();
#使用lambda函数
$printResults$i= function($analytics, $profile) {
//perform your logic
};
call_user_func_array($printResults$i, array($analytics, $profile));