1

在函数 test() 中创建的数组。

然后我想在页面test.php上打印他们。

我的代码下来:

配置文件

function test(){
$str= array(
        'items' => array(
                0 => array(
                        'title' => 'Title',
                        'category' => 'Category name',
                        ),
                1 => array(
                        'title' => 'Title',
                        'category' => 'Category name',
                        ),
        ),
        'details' => array(
                'firstname' => 'firstname',
                'lastname' => 'lastname',
        ),
        'Id' => $Id,
        'OrderId' => 'fsdfsfdsrew'
);


$json = json_encode($str);
$base64 = base64_encode($json);

$sig = signMessage($base64, $secretPhrase);
}

测试.php

require_once("conf.php");

test();
print_r($str);
print_r($json);
print_r($base64);
print_r($sig);

请告诉我为什么代码不起作用?

请告诉我为什么不打印$str, $json,$base64$sig?

怎么做?

最好没有全局参数。

4

2 回答 2

2

您不能不将它们作为函数返回值返回。在 PHP 中,函数中声明的变量(在这种情况下是您尝试 print_r 的数组)仅在该函数的范围内可用,除非您使用 global 关键字将它们声明为全局。

以下是 PHP 中变量范围的详细信息:http: //php.net/manual/en/language.variables.scope.php

您可以构造一个更大的数组来包含这些数组并从 test() 函数中返回它们:

 function test(){
     //function code here....
     ////...

     $results = array('str'=> $str, 
                      'json'=> $json, 
                      'base64'=>$base64, 
                      'sig' => signMessage($base64, $secretPhrase)
                  ) ;

      return $results;
  }

然后像这样调用它:

  $results = test();
  print_r($results['str']);
  print_r($results['sjson']);
  print_r($results['base64']);
  print_r($results['sig']);
于 2013-01-17T15:44:15.043 回答
0

有很多方法可以做到这一点:首先,如果要在其他类上使用,则必须返回该值。在您的测试中,您可以执行以下操作:

$something = new Conf();
$someelse = $something->test();
echo $someelse;
于 2013-01-17T15:46:21.597 回答