我有一个 3x3 矩阵PHP
:
2 4 6
5 4 7
8 5 7
假设我在[0,0]
元素上 2. 将我在多维数组中的位置存储在变量 $current 中的最佳方法是什么?我正在考虑指针,但不确定如何在 PHP 中执行此操作。
$current = $data[0][0];
没有帮助,因为它不存储上下文。
其次,假设 $current 被存储,那么代码向右、向下、向左和向上查看(窥视)的最佳方法是什么?
谢谢。
我有一个 3x3 矩阵PHP
:
2 4 6
5 4 7
8 5 7
假设我在[0,0]
元素上 2. 将我在多维数组中的位置存储在变量 $current 中的最佳方法是什么?我正在考虑指针,但不确定如何在 PHP 中执行此操作。
$current = $data[0][0];
没有帮助,因为它不存储上下文。
其次,假设 $current 被存储,那么代码向右、向下、向左和向上查看(窥视)的最佳方法是什么?
谢谢。
PHP 中没有指针,您将无法对引用进行指针运算。
您可以使用next()
andprev()
函数在数组中前进和后退,您可以使用它key()
来找出您所在的位置。current()
将返回存储在数组中当前位置的值(有点像取消引用指针)。
这些都在单一深度级别上工作,因此您无法在多维数组中找到位置。
使用多维数组的最佳方法可能是简单地存储和递增/递减标识数组中位置的 X 和 Y 值。由于 PHP 中的数组在内部实现为哈希,因此无论包含什么和包含什么,引用$data[$x][$y]
都非常快。$x
$y
例如,如果您在矩阵中的当前位置是 (1, 1),您可以有一个变量来存储它:
$current = ['x' => 1, 'y' => 1];
要找出那里存储的内容,请查看:
$x = $current['x'];
$y = $current['y'];
$data[$x][$y];
要找出该位置左上角存储的内容,您可以通过简单地从当前位置的坐标中减去 1 来获得该位置,然后查找该位置:
$x = $current['x'] - 1;
$y = $current['y'] - 1;
$data[$x][$y];
只需使用单个值作为索引,并且value % 3 = row
,(int)(value / 3) = column
为您服务。往上减 3,往下加 3,左减 1,右加 1。还要确保你总是在边界上。
你能把你当前的位置存储为一个二元素数组吗?
$current = array(0,0)
然后您将使用以下命令访问位置 $current 的变量:
$array[$current[0]][$current[1]]
如果您正在遍历数组——我假设使用一对嵌套循环——您只需$current[0]
在外循环中递增$current[1]
并在内循环中递增(并在外循环中将其设置为零)。请注意,这会将您的“垂直”位置存储在 $current 的第一个元素中。如果您希望顺序像标准笛卡尔坐标一样是 (x,y),只需反转这两个元素。