[英]populating an array with a for loop in php
我需要在數組中添加*。 這就是我在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一起使用。 這是據我所知。
function makeStarString($varGrade) {
$starArray = array ();
$starString = "";
for ($i = 0; $i < strlen($varGrade); $i++){
$starArray($i) = $star;
$starString = $starString.(starArray(i));
}
return $starString;
}
我收到此錯誤“致命錯誤:在寫上下文中不能使用函數返回值”,因為行$starArray($i) = $star;
我發送給函數的參數是一個整數。 因此,該函數的目的是,如果我向該函數發送5,它將返回*****
我該如何修復我的PHP函數?
使用$starArray[$i]
代替$starArray($i)
和starArray(i)
。
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; }
UPDATE
如果將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;
}
這是您需要的嗎?
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, strlen(5555)
-忽略了它是數字的事實。 您只希望for循環為$varGrade
許多星號,因此不需要strlen()
。
詳細地說,我對字符串使用了單引號而不是雙引號,因為它們比較輕(PHP不會解析其中的變量)。
希望對您有所幫助。
此代碼應該有效
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;
}
如果您確實需要陣列中的星星,則無需使用循環:
$starArray = array_fill(0, $varGrade, '*');
如果需要將數組轉換為字符串:
$starString = implode('', $starArray);
但是,如果您真的不需要使用星形數組,則只使用str_repeat會更容易:
str_repeat('*', $varGrade);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.