2

可能听起来像一个愚蠢的问题,我还没有认真思考,

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

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

$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)

只是对正确方向的提示会有所帮助,不需要为我全力以赴。

或者关于如何解决这个问题的想法。

4

3 回答 3

2

好的,我猜你有你想要使用的宽度存储在某个地方!(并且您不想使用二维数组,如果您不关心,请检查其他答案,在这种情况下,二维数组更有意义)。

如果要获取线,请使用$start数组中 S 的位置并将其除以宽度。然后你需要向下或向上取整(取决于你是从 0 开始计数还是从 1 开始计数)

对于需要执行类似操作的列,请$start % $width在此处使用。(如果从 1 开始计数,则加 1)。

于 2012-05-25T18:22:03.643 回答
0

这里有一个提示:

$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 个元素。

于 2012-05-25T18:17:15.027 回答
0

您可以在数组中搜索您的字符串,如 '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++;
}
于 2012-05-25T18:32:47.220 回答