Php in_数组在搜索字符串时始终返回false

Php in_数组在搜索字符串时始终返回false,php,Php,我目前正在用PHP编写一个简单的战舰游戏。在游戏开始时,我在一个5 x 5的棋盘上生成了三个船的位置,每个船占据一个正方形: 函数生成三艘战舰$ships{ 对于$n=0;$n=BOARDSIZE{ printOops,这甚至不在海洋中。\n; } 否则iArray\u搜索$guess,$ships!=错误{ 祝贺你!你击沉了我的一艘战舰!\n; $board[$guess\u row][$guess\u col]=X; $ships_沉没++; } } 但是,对于每个猜测,in_数组函数始终返

我目前正在用PHP编写一个简单的战舰游戏。在游戏开始时,我在一个5 x 5的棋盘上生成了三个船的位置,每个船占据一个正方形:

函数生成三艘战舰$ships{ 对于$n=0;$n=BOARDSIZE{ printOops,这甚至不在海洋中。\n; } 否则iArray\u搜索$guess,$ships!=错误{ 祝贺你!你击沉了我的一艘战舰!\n; $board[$guess\u row][$guess\u col]=X; $ships_沉没++; } } 但是,对于每个猜测,in_数组函数始终返回false,即使该猜测实际上在$ships数组中。我看不出哪里出了问题,因为我已经明确地将所有内容都转换为字符串。我错过了什么明显的东西吗

正如一些人所问,generate_three_战舰执行后,$ships上的var_dump输出如下:

阵列3{ [0]=> 第2条12 [1]=> 第2条30 [2]=> 细线203 }
不幸的是,我没有一个完整的答案,因为我缺少一些信息来理解问题是什么

您可以通过使用打印数组的内容来调试正在发生的事情,以查看$ships的实际内容,并可能强制generate_new_position始终返回相同的值


如果你自己不能解决这个问题,你能在for循环前后使用var_dump发布$ships的内容吗?

generate_three\u在最后一个for循环之前调用战列舰。我将编辑我的问题,将其添加到抱歉中。我的抱歉,$ships作为参数传递。我会编辑我的帖子,这是我的疏忽。我认为生成新职位两次返回同一职位的几率很低,至少对于这个项目来说,不值得考虑。这是否回答了你的问题?简而言之:现在,您的函数并没有改变传递给它的$ships数组,而是它的本地副本。您需要通过引用传递,或者返回数组并重新分配结果。感谢您提供的链接。我用你的建议更新了本地脚本,但错误仍然存在。如果有帮助的话,我还将var_dump的输出放在了我的原始问题中。这就是我期望阵列的外观。这是您的代码,使用passbyreference和一个伪随机位置。欢迎使用SO。这应该在注释部分,而不是答案中。我使用了var_dump-我在validatiion检查之前立即将其放入,它返回了我所期望的那种输出。我将用输出更新我的原始问题。@Jeto我知道,但现在我只能在我的下发表评论posts@AgentNo数组看起来正常,对我来说,数组工作正常。尝试取消注释random_pos的定义并写入函数random_pos{return 1;},然后在generate_three_战列舰中写入ifin_数组$ship_position,$ships{echo在数组中;ship$ship\u position\n;$ship\u position=generate\u new\u position;}否则{echo不在数组中:ship$ship\u position\n;}