簡體   English   中英

用PHP中的for循環填充數組

[英]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;
}

關於我的修改的一些注意事項。

  1. 我不明白為什么首先需要$starArray數組。 所以我跳過了。

  2. 我修改了您的縮進。 奇怪的縮進會使非常簡單的代碼看起來比實際復雜得多。 :)

  3. 您應該詢問$i < $varGrade ,而不是$i < strlen($varGrade) 如果通過strlen()詢問,那么您將獲得輸入數字的寬度。 例如, strlen(55)是2, strlen(555)是3, strlen(5555)是4, strlen(5555) -忽略了它是數字的事實。 您只希望for循環為$varGrade許多星號,因此不需要strlen()

  4. 詳細地說,我對字符串使用了單引號而不是雙引號,因為它們比較輕(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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM