private static int  frogJump（int [] arrEl，int postion）{
/ **路上找到的叶子的标记数组。 * /
boolean [] leafArray = new boolean [postion + 1];

/ **青蛙需要的总步数。 * /
n步骤=位置;

for（int i = 0; i＆lt; arrEl.length; i ++）{

/ **如果青蛙需要叶子，它早先不存在。 ** /
if（postion＆gt; = arrEl [i]＆amp;＆amp;！leafArray [arrEl [i]]）{

/ *找到Mark leaf * /
leafArray [arrEl [i]] = true ;

/ **逐步减少（发现一次跳跃）。 * /
n步 - ;
}

if（steps == 0＆amp;＆amp; arrEl [i] == postion）{
return i;
}
}

}
</ code> </ pre>

function solution（\$ A = []，\$ Position）{

\$ StonesArray = array（）;

\$ StonesArray [TRUE] = \$ Position + 1;

\$ steps = \$ 位置;

for（\$ i = 0; \$ i＆lt; count（\$ A）; \$ i ++）{

echo“＆lt; pre＆gt;”;
print_r（\$ StonesArray）;

if（\$ Position＆gt; = \$ A [\$ i]＆amp;＆amp;！\$ StonesArray [\$ A [\$ i]]）{

\$ StonesArray [\$ A [\$ i]] = true; \ n

\$步骤 - ;
}

if（\$ steps == 0＆amp;＆amp; \$ A [\$ i] == \$ Position）{
return \$ i;
} \ n}

}

\$ GetSolution = solution（[3,2,1]，1）;
echo“＆lt; pre＆gt;”;
print_r（\$ GetSolution）; \ n </ code> </ pre>

boolean [] leafArray = new boolean [postion + 1]  ;
</ code> </ pre>

</ div>

### 原文

I have below program in JAVA.

private static int frogJump(int[] arrEl,int postion) {
/** Marker array for the leaf found on the way. */
boolean[] leafArray = new boolean[postion+1];

/** Total step needed for frog. */
int steps = postion;

for(int i = 0; i<arrEl.length; i++) {

/** if leaf needed for frog and it does not exist earlier. **/
if(postion>=arrEl[i] && !leafArray[arrEl[i]]) {

/* Mark leaf found */
leafArray[arrEl[i]] = true;

/** Reduce the step by one(coz one jump found). */
steps--;
}

if(steps == 0 && arrEl[i]==postion) {
return i;
}
}

return -1;
}

Which i want to convert in PHP. Till now what i have done is

function solution (\$A = [], \$Position) {

\$StonesArray = array();

\$StonesArray[TRUE] = \$Position + 1;

\$steps = \$Position;

for(\$i = 0; \$i< count(\$A); \$i++) {

echo "<pre>";
print_r(\$StonesArray);

if(\$Position >= \$A[\$i] && !\$StonesArray[\$A[\$i]]) {

\$StonesArray[\$A[\$i]] = true;

\$steps--;
}

if(\$steps == 0 && \$A[\$i] == \$Position) {
return \$i;
}
}

return -1;
}

\$GetSolution  = solution([3,2,1], 1);
echo "<pre>";
print_r(\$GetSolution);

above program should return 3. but after i have converted the program to PHP language its not returning the expected value.

I am sure I have done everything correct except converting the below line

boolean[] leafArray = new boolean[postion+1];

How to write this line in PHP?

doukui4786 这条线现在看起来不错，通常你应该逐步比较或调试你的代码，看看与原始代码的区别。如果您使用当前代码更新问题，我将会看一下，但这不是聊天，如果我们继续在评论中讨论，主持人可能会将此对话移至聊天频道。:)

drngnh708353 是的我写了\$StonesArray=array_fill（0，\$position+1，false）;但仍然没有得到我想要的输出。无论如何，。谢谢你的时间..但上次你可以检查我是否正确转换了PHP代码？

douhuan1937 好的是你正在使用的数组，它在原始代码中称为leafArray，但你调用它\$StonesArray所以它应该是\$StonesArray=array_fill（0，\$position+1，false）;（如果并非所有变量在您的代码中都有不同的名称，则会更容易比较）:)

dongshi6844 ，我试过这个。但仍然没有得到我想要的答案。我们需要弄明白的事情是真的错了。我需要指定此行array_fill（0，\$position+1，false）;到\$leafArray？比如\$leafarray=array_fill（0，\$position+1，false）;像这样？？

dongzhuxun5136 你看到我的评论，我编辑了几次抱歉...array_fill（0，\$position+1，false）;创建一个所有值都设置为false并且应该与Java数组匹配的数组。

dtnmuyoiw680512744 那是我不明白的。我该怎么写呢？

duanbiao4035 \$StonesArray[TRUE]=\$Position+1;没有意义，你真的只需要一个数组并将\$Position+1次falses放入其中。

dourou9477 MetaPhox，仍然没有得到预期的输出..让我知道我是否已正确转换程序..我正在编辑整个问题，

dongtaijue1578 那么如果那个代码是Java那么新的布尔[postion+1];将创建一个大小为postion+1的bool数组，并最初将所有元素设置为false。如果你想在php中实现相同，你只能使用\$leafArray=array_fill（0，\$position+1，false）;

doushi5752 我无法理解boolean[]leafArray=newboolean[postion+1];将成为\$leafArray=array（）;在php中，我们可以清楚地看到他们已经分配了一些值。或给定数组的大小

drgovyk64676 ，谢谢你的理解，但我自己也在学习php，所以请你告诉我如何定义这个大小位置+1的数组并包含布尔值？

dscc90150010 是的，它应该工作@Jhon。\$leafArray=array（）将创建一个将根据需要扩展的数组，但原始Java版本为此数组保留了+1个空格。在PHP中，您不需要这样做。

dongpi9164 ，你确定吗？而不是boolean[]leafArray=newboolean[postion+1];只需\$leafArray=array（）;将工作？？，因为他们已经添加了一些值，请检查。

doutiaosu2310 你只需要在\$StoneArray中存储布尔值，就是这样。boolean[]leafArray=newboolean[postion+1]表示大小位置+1的数组，包含布尔值。

doutandusegang2961 让我编辑我的问题然后，

doulvli9462 我认为这是C＃，无论如何我认为你不能用PHP创建一个预定义大小的数组。通常你不需要。只需使用\$leafArray=array（）;

dpba63888 查看源代码说它突出了java（它有类syntaxhighlighterjava）

douchao1879 检查codesolution.org/frog-jump-through-leaves-problem上的代码

dongmu1914 这不是C.我无法确定它是什么（C＃？C++？）请确定自己并更正标签。

1个回答

函数frogJump（数组\$ arrEl，\$ postion）{
/ **在路上找到的叶子的标记数组。 * /
\$ leafArray = array_fill（0，\$ postion + 1，false）;

/ **青蛙需要的总步数。 * /
\$ steps = \$ postion;

for（\$ i = 0; \$ i＆lt; count（\$ arrEl）; \$ i ++）{

/ **如果青蛙需要叶子，它不会 早先存在。 ** /
if if（\$ postion＆gt; = \$ arrEl [\$ i]＆amp;＆amp;！\$ leafArray [\$ arrEl [\$ i]]）{

/ *找到Mark leaf * /
\$ leafArray [ \$ arrEl [\$ i]] = true;

/ **逐步减少（发现一次跳转）。 * /
\$步骤 - ;
}

if（\$ steps == 0＆amp;＆amp; \$ arrEl [\$ i] == \$ postion）{
return \$ i;
}
}

}
</ code> </ pre>

print_r（frogJump（[3,2,1]，1））; </ code> outputs 2 </ code>。</ p>

</ div>

### 原文

I just translated your original Java code to PHP 1:1, most of it can be used as is with little change, look at this example:

function frogJump(array \$arrEl, \$postion) {
/** Marker array for the leaf found on the way. */
\$leafArray = array_fill(0, \$postion+1, false);

/** Total step needed for frog. */
\$steps = \$postion;

for(\$i = 0; \$i<count(\$arrEl); \$i++) {

/** if leaf needed for frog and it does not exist earlier. **/
if(\$postion>=\$arrEl[\$i] && !\$leafArray[\$arrEl[\$i]]) {

/* Mark leaf found */
\$leafArray[\$arrEl[\$i]] = true;

/** Reduce the step by one(coz one jump found). */
\$steps--;
}

if(\$steps == 0 && \$arrEl[\$i]==\$postion) {
return \$i;
}
}

return -1;
}

print_r(frogJump([3,2,1], 1)); outputs 2.

I also compiled the Java code and the output is also 2, so it seems correct to me? Run with System.out.println(frogJump(new int[]{3,2,1}, 1));

duangou2028 我想如果我的答案解决了你的问题，你可以接受它并且问题已经结束。 如果您还有其他问题，请在评论中提问或创建新问题。

down00111 我没有足够的代表。 访问聊天。