2013-02-21 139 views
0

我的代码类似于;PHP:如何从函数中返回多维数组

function myFunc() { 
    $myArry = array(); 
    $myArry[1]['first'] = "First"; 
    $myArry[1]['second'] = "Second"; 
    $myArry[2]['first'] = "First"; 
    $myArry[2]['second'] = "Second"; 
    $myArry[3]['first'] = "First"; 
    $myArry[3]['second'] = "Second"; 
    echo "before return: ".count($myArry); 
    return $myArry; 
} 

// main code 
$returnedArry = array(myFunc()); 
echo "after return: ".count($returnedArry); 

输出:

before return: 3 
after return: 1 

这到底是怎么发生的,可有人请解释一下吗?另外,我该怎么做?

谢谢。

+0

对不起,请忽略此职位,我已经要求Mod将其关闭,我在我的代码中有一个错字,所以这个问题是完全无效的 – jwbensley 2013-02-21 15:57:35

回答

8
$returnedArry = array(myFunc()); 

该行代码将您的数组放入另一个数组中。由于是数组中的唯一元素计为1,你真正想要的是这样的:

$returnedArry = myFunc(); 
+0

@javano然后你做了其他*错误。这是返回数组的正确方法。 – Sammitch 2013-02-21 15:58:47

+0

感谢您的意见,这解释了为什么这不起作用。虽然我实际上在我的代码中引用了一个不同的函数,所以这个问题完全没有意义。抱歉给你带来不便! – jwbensley 2013-02-21 16:00:09

1

你包裹在一个新的数组返回$myArry,因此它是在$returnedArry的单个条目。

$returnedArray = array(
      array(
       0 => array(
         'first' => "First", 
         'second' => "Second" 
        ), 
       1 => ... 
       2 => ... 
     ) 
    ) 

要产生你正在寻找的结果:

$returnedArray = myFunc(); 

在未来,你可以使用print_rvar_dump帮助你展示什么在这些阵列。

+0

感谢您的意见,这解释了为什么这不起作用。虽然我实际上在我的代码中引用了一个不同的函数,所以这个问题完全没有意义。抱歉给你带来不便! – jwbensley 2013-02-21 15:58:35