PHP 网格类型 数组 获取行或列



这听起来像是一个愚蠢的问题,我思考得不够认真,

或者它比我想象的要难...

假设我有一个数字数组,例如:

$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++;
}

最新更新