Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何返回到引用中的父数组?_Php_Arrays_Reference - Fatal编程技术网

Php 如何返回到引用中的父数组?

Php 如何返回到引用中的父数组?,php,arrays,reference,Php,Arrays,Reference,如果我引用了数组深处的元素,例如: $a = [ [ [ ] ], [ [ ] ] ]; 在本例中,如何返回父数组和$a[1] 我通过一个增加或减少的计数器变量来分配引用。问题出现在我减少时,然后我需要返回到父阵列:( 我想我明白了: $ref = &$a[1][1]; $new\u ref=&$a; $i=0; 而($i

如果我引用了数组深处的元素,例如:

$a = [ 

  [

    [

    ]


  ],

  [

    [

    ]

  ]

];
在本例中,如何返回父数组
和$a[1]

我通过一个增加或减少的计数器变量来分配引用。问题出现在我减少时,然后我需要返回到父阵列:(

我想我明白了:

$ref = &$a[1][1]; 
$new\u ref=&$a;
$i=0;
而($i<$counter-1){
$new_ref=&$new_ref[计数($new_ref)-1];
$i++;
}  
$ref=&$new\u ref;
但它似乎不工作的权利,哈哈。 我不知道为什么,逻辑是正确的。我正在使用一个新的参考来爬升阵列,直到接近最后一级://

不能像这样“返回”

无论是否引用,子数组都不隐式知道父数组的名称

要创建这样的循环依赖关系,需要显式地建立循环-通常在这样做的情况下,是使用自定义类(例如,一个控件有一个父控件和许多子控件)而不是数组


我会尽量避免这样的循环图,并重新构造设计——这是因为它感觉(尤其是在没有实际用例的情况下)这种方法会产生不必要的复杂性。

数组很简单。我们可以在数组中放置许多变量,甚至可以命名存储这些信息的位置,但它们在对象意义上并不相关

用于访问数组中数据的结构只是为了让任何阅读代码的人都更直观

数组中的任何元素实际上都只是一个具有特定地址的信息片段。虽然可以直观地认为,由于一位信息位于一个数组中,而另一个数组中,这一切真正意味着数组中某个部分的信息更为复杂,可以更容易地访问是的

另一方面,类和对象……这是父/子关系可以而且确实发生的地方

通过引用传递也不例外:

      $new_ref = &$a;
      $i = 0;
      while($i < $counter - 1){
        $new_ref = &$new_ref[count($new_ref) - 1];
        $i++;
      }  

      $ref = &$new_ref;

简单的意思是-对
$ref
的任何更改都是对
$a[1][1]
的更改。无论是在函数中(通常会使其超出范围),还是在代码的其余部分编写变量
$a[1][1]
是一种较短的方法。

我建议避免使用此类代码---有什么特别的问题吗?我想通过某种评估是可能的,但不知道怎么做it@thelolcat不可能立即返回,因为信息只是..丢失。这就像询问哪些变量(不是引用)包含特定值。可以在对象图中搜索特定数组以查找父对象(就像可以在所有已知变量中搜索特定值一样),但这在程序设计中应该是不必要的。数组不知道它们所处的父数组。如果要跟踪此类关系,必须自己跟踪,可能需要使用递归数据结构。
$ref = &$a[1][1];