我需要在数组中添加*。这就是我在javaScript中的表现。
function makeStarString(grade) {
var starArray = [];
var starString = "";
for (var i = 0; i < grade; i++){
starArray[i] = "*";
starString = starString.concat(starArray[i]);
}
return starString;
}
javascript版本工作正常,但我不能使它与PHP一起工作。 这就是我用php得到的。
function makeStarString($varGrade) {
$starArray = array ();
$starString = "";
for ($i = 0; $i < strlen($varGrade); $i++){
$starArray($i) = $star;
$starString = $starString.(starArray(i));
}
return $starString;
}
我收到此错误&#34;致命错误:无法在写入上下文中使用函数返回值&#34;因为行$starArray($i) = $star;
我发送给函数的参数是一个Integer。 因此该函数的目的是,如果我向函数发送5,它将返回*****
如何修复我的php功能?
答案 0 :(得分:2)
使用$starArray[$i]
代替$starArray($i)
和starArray(i)
。
答案 1 :(得分:0)
strlen($varGrade)
通常是个好主意,因为foreach
循环必须计算每次迭代的长度。这可能会带来性能问题。$star
变量未定义,因此我不知道您要将它放在那里。修改自己的代码。最后,您可以使用.=
运算符向现有字符串添加内容。
function makeStarString($varGrade) {
$starArray = array ();
$starString = "";
$length = strlen($varGrade);
for ($i = 0; $i < $length; $i++){
$starArray[$i] = $star;
$starString .= $starArray[$i];
// equivalent to $starString = $starString . $starArray[$];
}
return $starString;
}
<强>更新强>
如果您向该函数发送int
,则不需要strlen
:
function makeStarString($varGrade) {
$starArray = array ();
$starString = "";
for ($i = 0; $i < $varGrade; $i++){
$starArray[$i] = $star;
$starString .= $starArray[$i];
// equivalent to $starString = $starString . $starArray[$];
}
return $starString;
}
答案 2 :(得分:0)
这是你需要的吗?
function makeStarString($varGrade) {
$starString = '';
for ($i = 0; $i < $varGrade; $i++) {
$starString .= '*';
}
return $starString;
}
关于我的修改的一些注释。
我不明白为什么你首先需要那个$starArray
数组。所以我跳了它。
我修改了你的缩进。奇怪的缩进可以使非常简单的代码看起来比实际复杂得多。 :)
您应该询问$i < $varGrade
,而不是$i < strlen($varGrade)
。如果您通过strlen()
询问,则会获得您输入的数字的宽度。例如,strlen(55)
为2,strlen(555)
为3,strlen(5555)
为4等。 - 忽略它是一个数字的事实。您只是希望for循环为您提供$varGrade
多个星标,因此不需要strlen()
。
作为一个细节,我使用单引号而不是双引号用于字符串,因为它们更轻(PHP不解析其中的变量)。
我希望它有所帮助。
答案 3 :(得分:0)
此代码应该可以使用
function makeStarString($varGrade) {
$star = "*"; // star variable wasn't defined to.
$starArray = array ();
$starString = "";
for ($i = 0; $i < $varGrade; $i++){
$starArray[$i] = $star; // [ ] instead of ( )
$starString .= ($starArray[$i]); // $a.=$b instead of $a=$a+$b, added the $ at the i and [ ] instead of ( )
}
return $starString;
}
答案 4 :(得分:0)
如果你真的需要阵列中的星星,你就不需要使用循环:
$starArray = array_fill(0, $varGrade, '*');
如果您需要将数组转换为字符串:
$starString = implode('', $starArray);
但如果你真的不需要使用星球阵列,那么使用str_repeat会更容易:
str_repeat('*', $varGrade);