如果他在函数中创建了打印数组?

时间:2013-01-17 15:41:49

标签: php arrays

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

然后我想打印他们的页面 test.php

我的代码:

conf.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);
}

test.php的

require_once("conf.php");

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

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

请告诉我为什么没有打印$str$json$base64$sig

怎么做?

最好没有全局参数。

2 个答案:

答案 0 :(得分: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']);

答案 1 :(得分:0)

许多方法可以做到这一点: 首先,如果要在其他类上使用,则必须返回该值。 在你的测试中你可以做到:

$something = new Conf();
$someelse = $something->test();
echo $someelse;