这听起来像是一个愚蠢的问题,我思考得不够认真,
或者它比我想象的要难...
假设我有一个数字数组,例如:
$table = array(
'5','2','1','4','4','4',
'1','2','4','2','1','1',
'3','4','3','1','4','4',
'1','4','2','S','4','4',
'1','2','4','2','1','1',
'5','2','6','4','8','1'
);
S = 我想根据"S"的位置获取行或列的位置。
我知道我可以到达S所在的地方。
通过做:
$start = array_search('S', $table);
这个数组所基于的"网格",S可以是任何地方。
并且网格本身可以是不同的尺寸长度和宽度。
我将如何获取整行或整列。?
(IE:S 在第 3 列:4,2,1,S,2,4)
(IE:S 在第 3 行:1,4,2,S,4,4)
只要在正确的方向上提示就会有所帮助,不需要为我全力以赴。
或者关于如何处理这个问题的想法。
好的,我想你已经把你想使用的宽度存储在某个地方了!(而且您不想使用二维数组,如果您不在乎,请检查另一个答案,在这种情况下,二维数组更有意义)。
如果要获取该行,请使用 $start
即数组中 S 的位置并将其除以宽度。然后你需要向下或向上舍入(取决于你是开始计数在 0 还是 1)
对于您需要执行类似操作的列,请在此处使用$start % $width
。(如果从 1 开始计数,则加 1)。
一个提示:
$table[] = array();
$table[][0] = array(5,2,1,4,5);
$table[][1] = array(1,5,2,3,3);
$table[][2] = array(1,2,'s',4,5);
您将需要一个数组数组才能进行 x/y 搜索。
x 是外部数组中的第 n 个元素。
你的 y 是内部数组中的第 n 个元素。
您可以在数组中搜索字符串,例如"s",并找到其中的列和行:
$cols=5; // your columns count
$row=1;
$i=1;
$array = array('1','2','3','4','5','6','7','s','9');
foreach($array as $value)
{
if($value=='s')
{
echo 'Column : '.$i .' || Row : ' .$row ;
}
if($i==$cols)
{
$i=0;
$row++;
}
$i++;
}