目錄
回复讨论(解决方案)
首頁 後端開發 php教程 帮忙解释两个for循环

帮忙解释两个for循环

Jun 23, 2016 pm 01:50 PM
循環 解釋

各位大大,这是一个用*输出倒直角三角形的例子,这两个for循环我不是很白,特别是里面的那个,能解释下么,谢谢啦~

    for($i=1;$i<15;$i++){        for($j=$i;$j<15;$j++){            echo "*";        }       echo "<br>";    }
登入後複製


回复讨论(解决方案)

为什么还要有个变量$j去等于外层的变量$i,再次循环一遍呢?

你首先理解下单个发for循环含义!如果里面不再做一次循环就不会出现3角了,而是竖着的14个*

$j = $i;//是让内层循环的起始值等于外层的值//每次都少输出一个*//外层第一次循环,内层输出14个*//外层第二次循环,内层输出13个*//以此类推只到循环结束
登入後複製

$j = $i;
关于这两个变量,我这样说看你能不能理解。
$i代表的是行数,即第一次循环代表第一行,依次类推,一共十五行。
$j代表的是列数,即每一行有多少列。

把代码稍改动下,输出一个矩形,帮助你理解。改动的地儿:$j=1。

<?php for($i=1;$i<15;$i++){        for($j=1;$j<15;$j++){             echo "*";        }       echo "<br>";    }?> 
登入後複製

理解for循环
其实可以输出四种直角三角形

$i 可以看做是行, $j可以看做是列
首先看 $i =1;的时候$j =1; j<15,也就是里面的for会循环14次,第一行就会出现14个*,然后里面的for结束开始 $i=2;的循环
然后看 $i =2;的时候$j=2;j<15,里面的for会循环13次,出现13个*,后,开始执行$i=3;
…………
一次循环,最后得到第一行14个*,共14行,最后一行一个*,不知是否清楚.

多练练九九乘法表的输出和菱形的输出

这个我都能理解唉,i=1的时候 第二个for循环1<15 是不是循环14个星 i=2的时候 循环13 以此类推

$i控制执行的行数。
$j控制每一行输出的*数。
很好理解啊。

因为从第一行开始,你的星号个数就要递减,知道了规律,你再结合代码就容易理解了。其实代码还可以这样写。

for($i=1;$i<15;$i++){        for($j=0;$j<15-$i;$j++){             echo "*";        }       echo "<br>";    }
登入後複製

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系統,解釋
4 週前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

熱門話題

Java教學
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1273
29
C# 教程
1256
24
2.8k螢幕是什麼解析 2.8k螢幕是什麼解析 Jan 02, 2024 pm 12:21 PM

我們常在購買電視,電腦或手機時看到多少K螢幕這種介紹,例如2.8K螢幕。每當這個時候就會有對電子設備不太了解的小夥伴好奇這個2.8K螢幕到底是什麼意思,解析度又是什麼。 2.8k螢幕什麼意思答:2.8k螢幕的意思是螢幕的解析度為2880*18002K就是橫向像素點數量大於2000,相同大小的螢幕,解析度越高畫面品質越好。解析度介紹1、由於螢幕上的點、線和麵都是由像素組成的,顯示器可顯示的像素越多,畫面就越精細,同樣的螢幕區域內能顯示的資訊也越多。 2.解析度越高,像素的數目越多,感應到的影像越

Go語言中的循環和遞歸的比較研究 Go語言中的循環和遞歸的比較研究 Jun 01, 2023 am 09:23 AM

註:本文以Go語言的角度來比較研究循環和遞歸。在編寫程式時,經常會遇到需要對一系列資料或操作進行重複處理的情況。為了實現這一點,我們需要使用循環或遞歸。循環和遞歸都是常用的處理方式,但在實際應用中,它們各有優缺點,因此在選擇使用哪種方法時需要考慮實際情況。本文將對Go語言中的循環和遞歸進行比較研究。一、循環循環是一種重複執行某段程式碼的機制。 Go語言中主要有三

lambda表達式跳出循環 lambda表達式跳出循環 Feb 20, 2024 am 08:47 AM

lambda表達式跳出循環,需要具體程式碼範例在程式設計中,循環結構是常用的一種重要語法。然而,在特定的情況下,我們可能希望在循環體內滿足某個條件時,跳出整個循環,而不是僅僅終止當前的循環迭代。在這個時候,lambda表達式的特性可以幫助我們達成跳脫循環的目標。 lambda表達式是一種匿名函數的宣告方式,它可以在內部定義簡單的函數邏輯。它與普通的函數聲明不同,

PHP傳回數組所有值,組成一個數組 PHP傳回數組所有值,組成一個數組 Mar 21, 2024 am 09:06 AM

這篇文章將為大家詳細講解有關PHP返回數組所有值,組成一個數組,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章後可以有所收穫。使用array_values()函數array_values()函數傳回陣列中所有值的陣列。它不會保留原始數組的鍵。 $array=[&quot;foo&quot;=&gt;&quot;bar&quot;,&quot;baz&quot;=&gt;&quot;qux&quot;];$values=array_values($array);//$values將是[&quot;bar&quot;,&quot;qux&quot;]使用迴圈可以使用循環手動獲取數組的所有值並將其新增至一個新

Java Iterator 與 Iterable:邁入編寫優雅程式碼的行列 Java Iterator 與 Iterable:邁入編寫優雅程式碼的行列 Feb 19, 2024 pm 02:54 PM

Iterator介面Iterator介面是一個用於遍歷集合的介面。它提供了幾個方法,包括hasNext()、next()和remove()。 hasNext()方法傳回布林值,指示集合中是否還有下一個元素。 next()方法傳回集合中的下一個元素,並將其從集合中刪除。 remove()方法從集合中刪除目前元素。以下程式碼範例示範如何使用Iterator介面來遍歷集合:Listnames=Arrays.asList("John","Mary","Bob");Iterator

foreach和for迴圈的差別是什麼 foreach和for迴圈的差別是什麼 Jan 05, 2023 pm 04:26 PM

區別:1、for透過索引來循環遍歷每一個資料元素,而forEach透過JS底層程式來循環遍歷數組的資料元素;2、for可以透過break關鍵字來終止迴圈的執行,而forEach不可以;3、 for可以透過控制迴圈變數的數值來控制迴圈的執行,而forEach不行;4、for在迴圈外可以呼叫迴圈變量,而forEach在迴圈外不能呼叫迴圈變數;5、for的執行效率要高於forEach。

python中使用向量化替換循環 python中使用向量化替換循環 Apr 14, 2023 pm 07:07 PM

所有程式語言都離不開循環。因此,預設情況下,只要有重複操作,我們就會開始執行循環。但是當我們處理大量迭代(數百萬/十億行)時,使用循環是一種犯罪。您可能會被困幾個小時,後來才意識到它行不通。這就是在python中實現向量化變得非常關鍵的地方。什麼是矢量化?向量化是一種在資料集上實現(NumPy)數組運算的技術。在後台,它將操作一次應用於數組或系列的所有元素(不同於一次操作一行的“for”循環)。接下來我們使用一些用例來示範什麼是向量化。求數字總和##使用循環importtimestart

Java函數中遞歸呼叫有哪些替代方案? Java函數中遞歸呼叫有哪些替代方案? May 05, 2024 am 10:42 AM

用迭代取代Java函數中的遞迴呼叫在Java中,遞歸是一個強大的工具,用來解決各種問題。但是,在某些情況下,使用迭代可能是更好的選擇,因為它更有效且不易出現堆疊溢位。以下是迭代的優點:效率更高,因為它不需要為每個遞歸呼叫建立新的堆疊幀。不容易發生堆疊溢出,因為堆疊空間使用受限。替代遞歸呼叫的迭代方法:Java中有幾種方法可以將遞歸函數轉換為迭代函數。 1.使用棧使用棧是將遞歸函數轉換為迭代函數最簡單的方法。堆疊是一種後入先出(LIFO)資料結構,類似函式呼叫堆疊。 publicintfa

See all articles