循环变量和函数名称php

时间:2018-03-21 13:38:57

标签: php function loops variables names

我们说我有一个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()等 和 &#39; 3daysAgo&#39;变为4daysAgo5daysAgo

可以吗?

3 个答案:

答案 0 :(得分:0)

我使用数组来存储结果:

$results_array = array();

然后我们可以使用一系列函数params来传递(仅作为示例 - 而不是您的脚本):

$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']);
}

这会将函数返回值(通过数字索引)添加到$results_array

答案 1 :(得分:0)

您可以使用此function更改变量名称:

var a = data.zip;
jQuery('.storelocator-info').hide();
for (var index = 0; index < a.length; ++index) {
  jQuery('.storelocator-info[data-id=' + a[index] + ']').show();
}

如果您想使用 function get_var_name($var) { foreach($GLOBALS as $var_name => $value) { if ($value === $var) { return $var_name; } } return false; } 更改变量名$request,可以执行以下操作:

$request1

如果你想动态创建函数:

${get_var_name($request).'1'} = $request;

并称之为:

  $function = create_function("/* comma separated arguments*/", "/*code as string*/);

答案 2 :(得分:0)

#使用lambda函数

$printResults$i= function($analytics, $profile) {
    //perform your logic
};

call_user_func_array($printResults$i, array($analytics, $profile));

Ref :: call_user_func_array