[{"data":1,"prerenderedAt":4224},["ShallowReactive",2],{"content-page:\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions":3,"content-page-quiz:none":1367,"book-module-total-pages":1368,"content-section-pages:\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F":1369,"content-directory-pages:\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions":4223},{"id":4,"title":5,"audience":6,"body":7,"contentType":1342,"course":1343,"description":1344,"estimateBasis":1345,"estimatedDiscussionMinutes":1346,"estimatedLiveMinutes":1347,"estimatedTotalMinutes":1348,"extension":1349,"meta":1350,"module":14,"navigation":1351,"order":1352,"path":1353,"promptAssist":1354,"seo":1355,"status":1356,"stem":1357,"tags":1358,"videoDuration":1362,"videoId":1363,"videoLink":1364,"videoTitle":1365,"week":14,"__hash__":1366},"content\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions.md","Use Conditions Loops And Functions","student",{"type":8,"value":9,"toc":1300},"minimark",[10,38,82,166,202,251,298,343,388,451,501,570,608,663,709,756,797,838,877,918,950,982,1002,1029,1059,1118,1181,1209],[11,12,15,19],"slide",{"id":13,"level":14},"main-idea","2",[16,17,18],"h2",{"id":13},"Main Idea",[20,21,22,26,29,32,35],"ul",{},[23,24,25],"li",{},"Conditions choose which block runs",[23,27,28],{},"Loops repeat work until the pattern is finished",[23,30,31],{},"Functions name reusable logic",[23,33,34],{},"PHP and JavaScript use similar control-flow ideas with different syntax",[23,36,37],{},"In this lesson, compare the patterns before using them in practice files",[11,39,41,44],{"id":40,"level":14},"practice-workspace",[16,42,43],{"id":40},"Practice Workspace",[20,45,46,53,59,62,72,75],{},[23,47,48,49],{},"Work inside ",[50,51,52],"code",{},"public_html\u002Fm02\u002Flessons\u002F",[23,54,55,56],{},"Lesson branch: ",[50,57,58],{},"Module02-Control-Flow-Functions",[23,60,61],{},"Create the folder if it is missing",[23,63,64,65,68,69],{},"Use file prefix ",[50,66,67],{},"control-flow-",", such as ",[50,70,71],{},"control-flow-even-odd.php",[23,73,74],{},"Keep each practice file focused on one idea",[23,76,77,78,81],{},"After a working change: run ",[50,79,80],{},"git status",", stage the changed files, and commit",[11,83,85,88],{"id":84,"level":14},"loop-types",[16,86,87],{"id":84},"Loop Types",[89,90,93,131],"two-col",{"gap":91,"left-width":92,"right-width":92},"lg","1fr",[94,95,97,102],"template",{"v-slot:left":96},"",[98,99,101],"h3",{"id":100},"use-these-in-php","Use These In PHP",[20,103,104,110,116,122,128],{},[23,105,106,109],{},[50,107,108],{},"for",": use when a counter, index, or fixed number of passes matters",[23,111,112,115],{},[50,113,114],{},"while",": use when the loop should continue as long as a condition stays true",[23,117,118,121],{},[50,119,120],{},"do while",": use when the body must run once before the condition is checked",[23,123,124,127],{},[50,125,126],{},"foreach",": use when reading each array value or each key\u002Fvalue pair",[23,129,130],{},"Update loop variables inside the loop so it can finish",[94,132,133,137],{"v-slot:right":96},[98,134,136],{"id":135},"use-these-in-javascript","Use These In JavaScript",[20,138,139,143,147,151,157,163],{},[23,140,141,109],{},[50,142,108],{},[23,144,145,115],{},[50,146,114],{},[23,148,149,121],{},[50,150,120],{},[23,152,153,156],{},[50,154,155],{},"for...of",": use for array values and other iterable values",[23,158,159,162],{},[50,160,161],{},"for...in",": use for object keys or property names",[23,164,165],{},"Avoid loop conditions that can never become false",[11,167,169,176],{"id":168,"level":14},"for-vs-foreach",[16,170,171,173,174],{"id":168},[50,172,108],{}," Vs ",[50,175,126],{},[89,177,178,192],{"gap":91,"left-width":92,"right-width":92},[94,179,180,187],{"v-slot:left":96},[181,182,183,184,186],"p",{},"Use ",[50,185,108],{}," when the counter matters:",[188,189],"code-snippet",{"language":190,"src":191},"php","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Ffor-vs-foreach-06.php",[94,193,194,199],{"v-slot:right":96},[181,195,183,196,198],{},[50,197,126],{}," when the values matter:",[188,200],{"language":190,"src":201},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Ffor-vs-foreach-07.php",[11,203,205,212],{"id":204,"level":14},"while-and-do-while",[16,206,207,209,210],{"id":204},[50,208,114],{}," And ",[50,211,120],{},[89,213,214,222],{"gap":91,"left-width":92,"right-width":92},[94,215,216,219],{"v-slot:left":96},[98,217,218],{"id":190},"PHP",[188,220],{"language":190,"src":221},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fwhile-and-do-while-17.php",[94,223,224,228,232,235],{"v-slot:right":96},[98,225,227],{"id":226},"javascript","JavaScript",[188,229],{"language":230,"src":231},"js","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fwhile-and-do-while-18.js",[181,233,234],{},"Both versions:",[20,236,237,240,243,246],{},[23,238,239],{},"Start with a counter",[23,241,242],{},"Check a condition",[23,244,245],{},"Update the counter",[23,247,248,250],{},[50,249,120],{}," runs at least once",[11,252,254,261],{"id":253,"level":14},"foreach-key-value",[16,255,257,258,260],{"id":256},"php-foreach-key-and-value","PHP ",[50,259,126],{}," Key And Value",[89,262,265,270],{"gap":91,"left-width":263,"right-width":264},"1.1fr","0.9fr",[94,266,267],{"v-slot:left":96},[188,268],{"language":190,"src":269},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fforeach-key-value-19.php",[94,271,272,275],{"v-slot:right":96},[181,273,274],{},"Two common forms:",[20,276,277,283,289,292,295],{},[23,278,279,282],{},[50,280,281],{},"foreach ($items as $value)",": use when each value is enough",[23,284,285,288],{},[50,286,287],{},"foreach ($items as $key => $value)",": use when the key matters",[23,290,291],{},"Use key\u002Fvalue loops for associative arrays",[23,293,294],{},"Later database rows are arrays with column names as keys",[23,296,297],{},"Read values from the array; avoid changing the source array unless that is the point",[11,299,301,309],{"id":300,"level":14},"for-in-vs-for-of",[16,302,304,305,173,307],{"id":303},"javascript-forin-vs-forof","JavaScript ",[50,306,161],{},[50,308,155],{},[89,310,311,316],{"gap":91,"left-width":263,"right-width":264},[94,312,313],{"v-slot:left":96},[188,314],{"language":230,"src":315},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Ffor-in-vs-for-of-20.js",[94,317,318,321],{"v-slot:right":96},[181,319,320],{},"Practical rule:",[20,322,323,328,333,338],{},[23,324,325,327],{},[50,326,155],{},": values from an array or iterable",[23,329,330,332],{},[50,331,161],{},": keys or property names",[23,334,183,335,337],{},[50,336,155],{}," for most array value loops",[23,339,340,342],{},[50,341,161],{}," can include custom properties",[11,344,346,350],{"id":345,"level":14},"modulo-and-loop",[16,347,349],{"id":348},"even-and-odd-loop","Even And Odd Loop",[89,351,352,357],{"gap":91,"left-width":92,"right-width":92},[94,353,354],{"v-slot:left":96},[188,355],{"language":190,"src":356},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Feven-and-odd-loop-04.php",[94,358,359,362,366,369],{"v-slot:right":96},[181,360,361],{},"Example output:",[188,363],{"language":364,"src":365},"text","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fexample-output-05.txt",[181,367,368],{},"Notes:",[20,370,371,377,382],{},[23,372,373,376],{},[50,374,375],{},"%",": remainder after division",[23,378,379,381],{},[50,380,126],{},": loop through each array value",[23,383,384,387],{},[50,385,386],{},"===",": compare value and type",[11,389,391,394,401],{"id":390,"level":14},"loop-risk-examples",[16,392,393],{"id":390},"Loop Risk Examples",[395,396,398],"admonition",{"type":397},"warning",[181,399,400],{},"Read these as risk examples. Do not run them in a normal browser request unless the instructor explicitly asks you to test a controlled version.",[89,402,403,428],{"gap":91,"left-width":92,"right-width":92},[94,404,405,411,414],{"v-slot:left":96},[98,406,408,409],{"id":407},"infinite-while","Infinite ",[50,410,114],{},[188,412],{"language":190,"src":413},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Finfinite-while-example-25.php",[20,415,416,419,425],{},[23,417,418],{},"The condition starts true",[23,420,421,424],{},[50,422,423],{},"true"," never becomes false",[23,426,427],{},"The page keeps printing until PHP stops the request",[94,429,430,435,438],{"v-slot:right":96},[98,431,408,433],{"id":432},"infinite-for",[50,434,108],{},[188,436],{"language":190,"src":437},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Finfinite-for-example-26.php",[20,439,440,446,449],{},[23,441,442,445],{},[50,443,444],{},"for (;;)"," has no setup, condition, or update sections",[23,447,448],{},"No condition means there is no planned stopping point",[23,450,427],{},[11,452,455,458],{"id":453,"level":454},"growing-array-loop","3",[16,456,457],{"id":453},"Growing Array Loop",[89,459,462,467],{"gap":91,"left-width":460,"right-width":461},"1.05fr","0.95fr",[94,463,464],{"v-slot:left":96},[188,465],{"language":190,"src":466},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fgrowing-array-loop-27.php",[94,468,469,472],{"v-slot:right":96},[181,470,471],{},"Why this is dangerous:",[20,473,474,480,486,495,498],{},[23,475,476,479],{},[50,477,478],{},"count($a)"," is recalculated on each pass",[23,481,482,485],{},[50,483,484],{},"array_push($a, $i)"," makes the array longer",[23,487,488,491,492,494],{},[50,489,490],{},"$i"," and ",[50,493,478],{}," both keep increasing",[23,496,497],{},"The loop does not reach a normal stopping point",[23,499,500],{},"It is not truly infinite because PHP eventually stops when memory or execution time runs out",[11,502,504,507],{"id":503,"level":14},"flow-control-summary",[16,505,506],{"id":503},"Flow Control Summary",[89,508,509,545],{"gap":91,"left-width":92,"right-width":92},[94,510,511,515],{"v-slot:left":96},[98,512,514],{"id":513},"decision-tools","Decision Tools",[20,516,517,523,533,539],{},[23,518,519,522],{},[50,520,521],{},"if",": run a block when a condition is true",[23,524,525,528,529,532],{},[50,526,527],{},"elseif"," \u002F ",[50,530,531],{},"else if",": test another condition",[23,534,535,538],{},[50,536,537],{},"else",": fallback when no condition matched",[23,540,541,544],{},[50,542,543],{},"switch",": compare one value to several cases",[94,546,547,551],{"v-slot:right":96},[98,548,550],{"id":549},"risk-to-watch","Risk To Watch",[20,552,553,556,559,567],{},[23,554,555],{},"First matching branch wins",[23,557,558],{},"Bad branch order can create dead code",[23,560,561,563,564],{},[50,562,543],{}," can fall through without ",[50,565,566],{},"break",[23,568,569],{},"Predict the output before running the page",[11,571,573,576],{"id":572,"level":14},"condition-example",[16,574,575],{"id":572},"Condition Example",[89,577,578,583],{"gap":91,"left-width":92,"right-width":92},[94,579,580],{"v-slot:left":96},[188,581],{"language":190,"src":582},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fcondition-example-01.php",[94,584,585,587,590,592],{"v-slot:right":96},[181,586,361],{},[188,588],{"language":364,"src":589},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fexample-output-02.txt",[181,591,368],{},[20,593,594,597,600,603],{},[23,595,596],{},"First true branch runs",[23,598,599],{},"Later branches are skipped",[23,601,602],{},"Branch order matters",[23,604,605,607],{},[50,606,527],{}," is checked only if earlier checks failed",[11,609,611,614],{"id":610,"level":14},"comparison-risk",[16,612,613],{"id":610},"Comparison Risk",[89,615,616,621],{"gap":91,"left-width":92,"right-width":92},[94,617,618],{"v-slot:left":96},[188,619],{"language":190,"src":620},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fcomparison-risk-03.php",[94,622,623,626,646,649],{"v-slot:right":96},[181,624,625],{},"Problem:",[20,627,628,637,640],{},[23,629,630,633,634],{},[50,631,632],{},"95"," is already ",[50,635,636],{},">= 60",[23,638,639],{},"First branch catches it",[23,641,642,645],{},[50,643,644],{},"Excellent"," can never print",[181,647,648],{},"Correction:",[20,650,651,654,657],{},[23,652,653],{},"Check the most specific condition first",[23,655,656],{},"Use the broad fallback later",[23,658,659,660,662],{},"The skipped ",[50,661,644],{}," branch is dead code because the earlier branch catches the value first",[11,664,666,671],{"id":665,"level":14},"switch-example",[16,667,668,670],{"id":665},[50,669,543],{}," Example",[89,672,673,678],{"gap":91,"left-width":92,"right-width":92},[94,674,675],{"v-slot:left":96},[188,676],{"language":190,"src":677},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fswitch-example-15.php",[94,679,680,683],{"v-slot:right":96},[181,681,682],{},"What to notice:",[20,684,685,690,695,701],{},[23,686,687,689],{},[50,688,543],{}," compares one value against several cases",[23,691,692,694],{},[50,693,566],{}," stops fall-through into the next case",[23,696,697,700],{},[50,698,699],{},"default"," is the fallback",[23,702,183,703,705,706,708],{},[50,704,521],{},"\u002F",[50,707,527],{}," when each condition checks something different",[11,710,712,721],{"id":711,"level":14},"switch-fallthrough",[16,713,715,716,718,719],{"id":714},"missing-break-in-switch","Missing ",[50,717,566],{}," In ",[50,720,543],{},[89,722,723,728],{"gap":91,"left-width":92,"right-width":92},[94,724,725],{"v-slot:left":96},[188,726],{"language":190,"src":727},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fswitch-fallthrough-16.php",[94,729,730,733],{"v-slot:right":96},[181,731,732],{},"Prediction:",[20,734,735,741,747,753],{},[23,736,737,740],{},[50,738,739],{},"Monday"," matches the first case",[23,742,743,744,746],{},"No ",[50,745,566],{}," means execution continues",[23,748,749,752],{},[50,750,751],{},"Tuesday"," also prints",[23,754,755],{},"Fall-through is sometimes intentional, but only use it when you mean to group cases",[11,757,759,766],{"id":758,"level":14},"break-and-continue",[16,760,761,209,763],{"id":758},[50,762,566],{},[50,764,765],{},"continue",[89,767,768,773],{"gap":91,"left-width":92,"right-width":92},[94,769,770],{"v-slot:left":96},[188,771],{"language":190,"src":772},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fbreak-and-continue-08.php",[94,774,775,777,780,782],{"v-slot:right":96},[181,776,361],{},[188,778],{"language":364,"src":779},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fexample-output-09.txt",[181,781,368],{},[20,783,784,789,794],{},[23,785,786,788],{},[50,787,765],{},": skip the rest of this loop pass",[23,790,791,793],{},[50,792,566],{},": stop the loop completely",[23,795,796],{},"Use sparingly so the loop still reads clearly",[11,798,800,808],{"id":799,"level":14},"break-continue-js",[16,801,803,209,805,807],{"id":802},"break-and-continue-in-javascript",[50,804,566],{},[50,806,765],{}," In JavaScript",[89,809,810,815],{"gap":91,"left-width":92,"right-width":92},[94,811,812],{"v-slot:left":96},[188,813],{"language":230,"src":814},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fbreak-continue-js-21.js",[94,816,817,820],{"v-slot:right":96},[181,818,819],{},"Same control idea:",[20,821,822,827,832,835],{},[23,823,824,826],{},[50,825,765],{},": skip this pass",[23,828,829,831],{},[50,830,566],{},": exit the loop",[23,833,834],{},"Use both carefully so the loop still reads clearly",[23,836,837],{},"The same ideas appear in PHP and JavaScript",[11,839,841,844],{"id":840,"level":14},"function-example",[16,842,843],{"id":840},"Function Example",[89,845,846,851],{"gap":91,"left-width":92,"right-width":92},[94,847,848],{"v-slot:left":96},[188,849],{"language":190,"src":850},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Ffunction-example-10.php",[94,852,853,855,858,860],{"v-slot:right":96},[181,854,361],{},[188,856],{"language":364,"src":857},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fexample-output-11.txt",[181,859,368],{},[20,861,862,865,868,874],{},[23,863,864],{},"Function name describes the reusable job",[23,866,867],{},"Parameters are inputs",[23,869,870,873],{},[50,871,872],{},"return"," sends a value back",[23,875,876],{},"Type hints document expected values",[11,878,880,884],{"id":879,"level":14},"same-idea-javascript",[16,881,883],{"id":882},"same-idea-in-javascript","Same Idea In JavaScript",[89,885,886,891],{"gap":91,"left-width":92,"right-width":92},[94,887,888],{"v-slot:left":96},[188,889],{"language":230,"src":890},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fsame-idea-in-javascript-12.js",[94,892,893,896,907,910],{"v-slot:right":96},[181,894,895],{},"Same idea:",[20,897,898,901,904],{},[23,899,900],{},"Function accepts inputs",[23,902,903],{},"Function returns one result",[23,905,906],{},"Output goes to the browser console here",[181,908,909],{},"Different runtime:",[20,911,912,915],{},[23,913,914],{},"PHP prints into the server response",[23,916,917],{},"JavaScript runs after the browser receives the page",[11,919,921,924,927,945],{"id":920,"level":14},"debugging-flow",[16,922,923],{"id":920},"Debugging Flow",[181,925,926],{},"When output is wrong:",[928,929,930,933,936,939,942],"ol",{},[23,931,932],{},"Print the input value",[23,934,935],{},"Print the type if text\u002Fnumber confusion is possible",[23,937,938],{},"Test one condition or loop boundary",[23,940,941],{},"Change one thing",[23,943,944],{},"Refresh or rerun",[395,946,947],{"type":397},[181,948,949],{},"Change one thing, then retest. Rewriting the whole example makes it harder to know which line caused the new result.",[11,951,953,956],{"id":952,"level":14},"built-in-functions-practice",[16,954,955],{"id":952},"Built-in Functions Practice",[20,957,958,964,970,976,979],{},[23,959,960,963],{},[50,961,962],{},"abs()",": Work with distance from zero",[23,965,966,969],{},[50,967,968],{},"number_format()",": Display a number with a fixed number of decimal places",[23,971,972,975],{},[50,973,974],{},"preg_replace()",": Replace text that matches a regular expression",[23,977,978],{},"These helpers are useful in practice work, but the exact project logic depends on the task",[23,980,981],{},"See the slides below for small examples of each helper",[11,983,985,989,992],{"id":984,"level":454},"abs-example",[16,986,987,670],{"id":984},[50,988,962],{},[188,990],{"language":190,"src":991},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fabs-example-22.php",[20,993,994,999],{},[23,995,996,998],{},[50,997,962],{}," returns the positive distance from zero",[23,1000,1001],{},"This is useful when only the size of the difference matters",[11,1003,1005,1010,1013],{"id":1004,"level":454},"number-format-example",[16,1006,1008,670],{"id":1007},"number_format-example",[50,1009,968],{},[188,1011],{"language":190,"src":1012},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fnumber-format-example-23.php",[20,1014,1015,1020,1026],{},[23,1016,1017,1019],{},[50,1018,968],{}," returns display text",[23,1021,1022,1023],{},"Crypto-style values often need more decimal places, such as ",[50,1024,1025],{},"8",[23,1027,1028],{},"Add the transaction first, then format the final display value",[11,1030,1032,1037,1040],{"id":1031,"level":454},"preg-replace-example",[16,1033,1035,670],{"id":1034},"preg_replace-example",[50,1036,974],{},[188,1038],{"language":190,"src":1039},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions\u002Fpreg-replace-example-24.php",[20,1041,1042,1047,1050,1053,1056],{},[23,1043,1044,1046],{},[50,1045,974],{}," changes text that matches a pattern",[23,1048,1049],{},"This example changes spaces to hyphens",[23,1051,1052],{},"It also changes hyphens back to spaces",[23,1054,1055],{},"Use a different pattern when the allowed text rules are different",[23,1057,1058],{},"Regular expressions will be covered separately later",[11,1060,1062,1065],{"id":1061,"level":14},"knowledge-check",[16,1063,1064],{"id":1061},"Knowledge Check",[20,1066,1067,1073,1078,1087,1093,1101,1108,1115],{},[23,1068,1069,1070,1072],{},"Which branch runs first in an ",[50,1071,521],{}," chain?",[23,1074,1075,1076,1072],{},"What is dead code in an ",[50,1077,521],{},[23,1079,1080,1081,1083,1084,1086],{},"Why does a ",[50,1082,543],{}," case usually need ",[50,1085,566],{},"?",[23,1088,1089,1090,1092],{},"What does ",[50,1091,375],{}," tell you?",[23,1094,1095,1096,1098,1099,1086],{},"When is ",[50,1097,126],{}," cleaner than ",[50,1100,108],{},[23,1102,1103,1104,491,1106,1086],{},"What is the difference between JavaScript ",[50,1105,161],{},[50,1107,155],{},[23,1109,1110,1111,491,1113,1086],{},"What is the difference between ",[50,1112,566],{},[50,1114,765],{},[23,1116,1117],{},"Why move repeated logic into a function?",[11,1119,1121,1125],{"id":1120,"level":14},"finish-lesson-branch",[16,1122,1124],{"id":1123},"finish-the-lesson-branch","Finish The Lesson Branch",[928,1126,1127,1132,1138,1144,1150,1160,1171],{},[23,1128,1129,1130],{},"Check the final file list: ",[50,1131,80],{},[23,1133,1134,1135],{},"Stage the lesson work: ",[50,1136,1137],{},"git add public_html\u002Fm02\u002Flessons\u002F",[23,1139,1140,1141],{},"Commit the practice work: ",[50,1142,1143],{},"git commit -m \"Complete lesson practice\"",[23,1145,1146,1147],{},"Push the branch: ",[50,1148,1149],{},"git push origin Module02-Control-Flow-Functions",[23,1151,1152,1153,1155,1156,1159],{},"On GitHub, open a pull request from ",[50,1154,58],{}," into ",[50,1157,1158],{},"qa",", review it, then merge",[23,1161,1162,1163,1165,1166,1155,1168],{},"Briefly test ",[50,1164,1158],{},", then open and merge a pull request from ",[50,1167,1158],{},[50,1169,1170],{},"prod",[23,1172,1173,1174,1177,1178],{},"Prepare for the next lesson: ",[50,1175,1176],{},"git checkout qa"," then ",[50,1179,1180],{},"git pull origin qa",[11,1182,1184,1187],{"id":1183,"level":14},"summary",[16,1185,1186],{"id":1183},"Summary",[20,1188,1189,1192,1195,1200,1203,1206],{},[23,1190,1191],{},"Conditions choose between branches",[23,1193,1194],{},"Loop choice depends on whether the counter, condition, value, or key matters",[23,1196,1197,1199],{},[50,1198,126],{}," is the normal PHP choice for reading array values",[23,1201,1202],{},"Functions make repeated logic easier to test and reuse",[23,1204,1205],{},"Small helper functions can prepare numbers or text before output",[23,1207,1208],{},"Debug control-flow problems by checking one input, one condition, or one loop boundary at a time",[11,1210,1212,1216],{"id":1211,"level":14},"key-terms",[16,1213,1215],{"id":1214},"key-terms-and-further-learning","Key Terms And Further Learning",[89,1217,1218,1248],{"gap":91,"left-width":92,"right-width":92},[94,1219,1220,1223,1230,1236,1242],{"v-slot:left":96},[98,1221,1222],{"id":1211},"Key Terms",[181,1224,1225,1229],{},[1226,1227,1228],"strong",{},"Condition"," - A true\u002Ffalse check that controls which code runs",[181,1231,1232,1235],{},[1226,1233,1234],{},"Loop"," - Code that repeats while a pattern continues",[181,1237,1238,1241],{},[1226,1239,1240],{},"Dead code"," - Code that cannot run because earlier logic prevents it",[181,1243,1244,1247],{},[1226,1245,1246],{},"Function"," - Named reusable logic with optional inputs and a result",[94,1249,1250,1254],{"v-slot:right":96},[98,1251,1253],{"id":1252},"further-learning","Further Learning",[20,1255,1256,1265,1272,1279,1286,1293],{},[23,1257,1258],{},[1259,1260,1264],"a",{"href":1261,"rel":1262},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Fcontrol-structures.if.php",[1263],"nofollow","PHP Manual: if",[23,1266,1267],{},[1259,1268,1271],{"href":1269,"rel":1270},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Fcontrol-structures.foreach.php",[1263],"PHP Manual: foreach",[23,1273,1274],{},[1259,1275,1278],{"href":1276,"rel":1277},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Fcontrol-structures.switch.php",[1263],"PHP Manual: switch",[23,1280,1281],{},[1259,1282,1285],{"href":1283,"rel":1284},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript\u002FGuide\u002FLoops_and_iteration",[1263],"MDN: Loops and iteration",[23,1287,1288],{},[1259,1289,1292],{"href":1290,"rel":1291},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Ffunctions.user-defined.php",[1263],"PHP Manual: functions",[23,1294,1295],{},[1259,1296,1299],{"href":1297,"rel":1298},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript\u002FGuide\u002FFunctions",[1263],"MDN: JavaScript functions",{"title":96,"searchDepth":1301,"depth":1301,"links":1302},2,[1303,1304,1305,1306,1308,1310,1312,1314,1315,1316,1317,1318,1319,1320,1322,1324,1326,1328,1329,1330,1331,1332,1334,1336,1338,1339,1340,1341],{"id":13,"depth":1301,"text":18},{"id":40,"depth":1301,"text":43},{"id":84,"depth":1301,"text":87},{"id":168,"depth":1301,"text":1307},"for Vs foreach",{"id":204,"depth":1301,"text":1309},"while And do while",{"id":256,"depth":1301,"text":1311},"PHP foreach Key And Value",{"id":303,"depth":1301,"text":1313},"JavaScript for...in Vs for...of",{"id":348,"depth":1301,"text":349},{"id":390,"depth":1301,"text":393},{"id":453,"depth":1301,"text":457},{"id":503,"depth":1301,"text":506},{"id":572,"depth":1301,"text":575},{"id":610,"depth":1301,"text":613},{"id":665,"depth":1301,"text":1321},"switch Example",{"id":714,"depth":1301,"text":1323},"Missing break In switch",{"id":758,"depth":1301,"text":1325},"break And continue",{"id":802,"depth":1301,"text":1327},"break And continue In JavaScript",{"id":840,"depth":1301,"text":843},{"id":882,"depth":1301,"text":883},{"id":920,"depth":1301,"text":923},{"id":952,"depth":1301,"text":955},{"id":984,"depth":1301,"text":1333},"abs() Example",{"id":1007,"depth":1301,"text":1335},"number_format() Example",{"id":1034,"depth":1301,"text":1337},"preg_replace() Example",{"id":1061,"depth":1301,"text":1064},{"id":1123,"depth":1301,"text":1124},{"id":1183,"depth":1301,"text":1186},{"id":1214,"depth":1301,"text":1215},"presentation","Internet Applications","Practice decisions, repetition, and reusable logic with small PHP and JavaScript examples that produce visible output.","Face-to-face class of about 40 students; includes prediction prompts, short coding checks, debugging discussion, and comparison between PHP and JavaScript.","10","65","75","md",{},true,"20","\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions",false,{"title":5,"description":1344},"published","internet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F02-conditions-loops-functions",[190,1359,1360,1361],"conditions","loops","functions","1:01:13","aTmU0kABQms","https:\u002F\u002Fyoutu.be\u002FaTmU0kABQms","Conditions Loops and Functions","qaCmjtbulmPmiFJ-F5imZHK9Q2JoKEDvzB78n7TlMWk",null,[],[1370,3259],{"id":1371,"title":1372,"audience":6,"body":1373,"contentType":1342,"course":1343,"description":3242,"estimateBasis":3243,"estimatedDiscussionMinutes":3244,"estimatedLiveMinutes":3245,"estimatedTotalMinutes":3246,"extension":1349,"meta":3247,"module":14,"navigation":1351,"order":1346,"path":3248,"promptAssist":1354,"seo":3249,"status":1356,"stem":3250,"tags":3251,"videoDuration":3254,"videoId":3255,"videoLink":3256,"videoTitle":3257,"week":14,"__hash__":3258},"content\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript.md","Compare PHP And JavaScript",{"type":8,"value":1374,"toc":3207},[1375,1396,1428,1463,1517,1587,1597,1664,1730,1815,1868,1957,2010,2056,2157,2217,2273,2332,2396,2441,2507,2669,2747,2773,2818,2860,2902,2936,2966,2984,3035,3078,3106],[11,1376,1377,1379],{"id":13,"level":14},[16,1378,18],{"id":13},[20,1380,1381,1384,1387,1390,1393],{},[23,1382,1383],{},"PHP and JavaScript share programming ideas",[23,1385,1386],{},"PHP runs on the server; JavaScript usually runs in the browser",[23,1388,1389],{},"Output appears in different places depending on where the code runs",[23,1391,1392],{},"Types, variables, arrays, and operators look similar but have important differences",[23,1394,1395],{},"Error messages usually give a file, line, and clue before you change code",[11,1397,1398,1400],{"id":40,"level":14},[16,1399,43],{"id":40},[20,1401,1402,1406,1411,1413,1421,1424],{},[23,1403,48,1404],{},[50,1405,52],{},[23,1407,55,1408],{},[50,1409,1410],{},"Module02-PHP-vs-JS",[23,1412,61],{},[23,1414,64,1415,68,1418],{},[50,1416,1417],{},"php-js-",[50,1419,1420],{},"php-js-type-check.php",[23,1422,1423],{},"Keep each practice file small enough to debug directly",[23,1425,77,1426,81],{},[50,1427,80],{},[11,1429,1431,1434,1437,1460],{"id":1430,"level":14},"lesson-path",[16,1432,1433],{"id":1430},"Lesson Path",[181,1435,1436],{},"This presentation compares the same programming ideas in both languages:",[928,1438,1439,1442,1445,1448,1451,1454,1457],{},[23,1440,1441],{},"Where code runs",[23,1443,1444],{},"Comments",[23,1446,1447],{},"Output and inspection tools",[23,1449,1450],{},"Variables and scope",[23,1452,1453],{},"Data types and examples",[23,1455,1456],{},"Operators and comparisons",[23,1458,1459],{},"Beginner PHP error reading",[181,1461,1462],{},"Loops, conditions, and functions continue in the next presentation.",[11,1464,1466,1470,1514],{"id":1465,"level":14},"server-vs-browser",[16,1467,1469],{"id":1468},"server-code-and-browser-code","Server Code And Browser Code",[89,1471,1472,1493],{"gap":91,"left-width":92,"right-width":92},[94,1473,1474,1476],{"v-slot:left":96},[98,1475,218],{"id":190},[20,1477,1478,1481,1484,1487,1490],{},[23,1479,1480],{},"Runs on the server",[23,1482,1483],{},"Can read server files",[23,1485,1486],{},"Can connect to a database, such as MySQL",[23,1488,1489],{},"Builds HTML, JSON, or redirects",[23,1491,1492],{},"Output becomes part of the response",[94,1494,1495,1497],{"v-slot:right":96},[98,1496,227],{"id":226},[20,1498,1499,1502,1505,1508,1511],{},[23,1500,1501],{},"Usually runs in the browser",[23,1503,1504],{},"Reacts to clicks and inputs",[23,1506,1507],{},"Can update the page after it loads",[23,1509,1510],{},"Can send later requests to the server",[23,1512,1513],{},"Output usually appears in DevTools Console unless it changes the page",[181,1515,1516],{},"Quick rule: server-side code prepares the response; browser-side code works with the response.",[11,1518,1520,1523],{"id":1519,"level":14},"where-code-lives",[16,1521,1522],{"id":1519},"Where Code Lives",[89,1524,1525,1558],{"gap":91,"left-width":92,"right-width":92},[94,1526,1527,1531,1534],{"v-slot:left":96},[98,1528,1530],{"id":1529},"php-page","PHP Page",[188,1532],{"language":190,"src":1533},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fwhere-code-lives-10.php",[20,1535,1536,1542,1548,1555],{},[23,1537,1538,1539],{},"File normally ends in ",[50,1540,1541],{},".php",[23,1543,1544,1547],{},[50,1545,1546],{},"\u003C?php"," starts PHP mode inside the file",[23,1549,1550,1551,1554],{},"Closing ",[50,1552,1553],{},"?>"," is needed when a file switches from PHP back to HTML",[23,1556,1557],{},"The server executes PHP before the browser sees the response",[94,1559,1560,1564,1568],{"v-slot:right":96},[98,1561,1563],{"id":1562},"javascript-page","JavaScript Page",[188,1565],{"language":1566,"src":1567},"html","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fwhere-code-lives-11.html",[20,1569,1570,1581,1584],{},[23,1571,1572,1573,1576,1577,1580],{},"JavaScript can live in a ",[50,1574,1575],{},"\u003Cscript>"," tag or separate ",[50,1578,1579],{},".js"," file",[23,1582,1583],{},"The browser runs it after the page reaches the user",[23,1585,1586],{},"Console output appears in DevTools, not in the page body",[11,1588,1590,1593],{"id":1589,"level":14},"request-flow",[16,1591,1592],{"id":1589},"Request Flow",[1594,1595],"mermaid",{"code":1596},"sequenceDiagram\n  participant Browser\n  participant WebServer as Web Server\n  participant PHP as Server-side Code\n  participant DB as Database\n  Browser->>WebServer: GET \u002Fm02\u002Flessons\u002Fphp-js-type-check.php\n  WebServer->>PHP: Run PHP file\n  PHP-->>DB: Optional data work\n  PHP-->>WebServer: Finished response\n  WebServer-->>Browser: HTML or JSON\n  Browser->>Browser: Run JavaScript\n",[11,1598,1600,1603,1606,1609],{"id":1599,"level":14},"php-syntax-first",[16,1601,1602],{"id":1599},"PHP Syntax First",[188,1604],{"language":190,"src":1605},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fphp-syntax-first-08.php",[181,1607,1608],{},"Required pieces:",[89,1610,1611,1640],{"gap":91,"left-width":92,"right-width":92},[94,1612,1613],{"v-slot:left":96},[20,1614,1615,1620,1631,1637],{},[23,1616,1617,1619],{},[50,1618,1546],{},": starts PHP mode",[23,1621,1622,1625,1626],{},[50,1623,1624],{},"$",": starts a variable name",[20,1627,1628],{},[23,1629,1630],{},"This tells PHP the next name is a variable, not plain text, a keyword, or a function name",[23,1632,1633,1636],{},[50,1634,1635],{},";",": ends a PHP statement",[23,1638,1639],{},"Variable names are case-sensitive",[94,1641,1642,1648,1661],{"v-slot:right":96},[23,1643,1644,1645,1647],{},"Save the file as ",[50,1646,1541],{}," so server-side code can run",[23,1649,1650,1651,1653,1654],{},"Omit the closing ",[50,1652,1553],{}," when a file contains only PHP\n",[20,1655,1656],{},[23,1657,183,1658,1660],{},[50,1659,1553],{}," only when switching back to HTML in the same file",[23,1662,1663],{},"Raw PHP tags in the browser usually mean the file was opened directly or not served as PHP",[11,1665,1667,1669,1727],{"id":1666,"level":14},"comments",[16,1668,1444],{"id":1666},[89,1670,1671,1705],{"gap":91,"left-width":92,"right-width":92},[94,1672,1673,1676,1679],{"v-slot:left":96},[98,1674,218],{"id":1675},"php-1",[188,1677],{"language":190,"src":1678},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fcomments-16.php",[20,1680,1681,1687,1693,1699],{},[23,1682,1683,1686],{},[50,1684,1685],{},"\u002F\u002F",": single-line comment",[23,1688,1689,1692],{},[50,1690,1691],{},"#",": PHP single-line comment",[23,1694,1695,1698],{},[50,1696,1697],{},"\u002F* ... *\u002F",": block comment",[23,1700,1701,1704],{},[50,1702,1703],{},"\u002F** ... *\u002F",": documentation style",[94,1706,1707,1710,1713],{"v-slot:right":96},[98,1708,227],{"id":1709},"javascript-1",[188,1711],{"language":230,"src":1712},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fcomments-17.js",[20,1714,1715,1719,1723],{},[23,1716,1717,1686],{},[50,1718,1685],{},[23,1720,1721,1698],{},[50,1722,1697],{},[23,1724,1725,1704],{},[50,1726,1703],{},[181,1728,1729],{},"Block comments can't be nested in either language.",[11,1731,1733,1737],{"id":1732,"level":14},"output-tools",[16,1734,1736],{"id":1735},"output-and-inspection-tools","Output And Inspection Tools",[89,1738,1739,1777],{"gap":91,"left-width":92,"right-width":92},[94,1740,1741,1745,1748],{"v-slot:left":96},[98,1742,1744],{"id":1743},"php-checks","PHP Checks",[188,1746],{"language":190,"src":1747},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fphp-checks-01.php",[20,1749,1750,1759,1765,1771],{},[23,1751,1752,528,1755,1758],{},[50,1753,1754],{},"echo",[50,1756,1757],{},"print",": send simple text into the response",[23,1760,1761,1764],{},[50,1762,1763],{},"var_export()",": show array keys and values clearly",[23,1766,1767,1770],{},[50,1768,1769],{},"var_dump()",": show type, size, and value",[23,1772,183,1773,1776],{},[50,1774,1775],{},"\u003Cpre>"," when debug output needs line breaks",[94,1778,1779,1783,1786],{"v-slot:right":96},[98,1780,1782],{"id":1781},"javascript-checks","JavaScript Checks",[188,1784],{"language":230,"src":1785},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fjavascript-checks-02.js",[20,1787,1788,1794,1800,1803,1809],{},[23,1789,1790,1793],{},[50,1791,1792],{},"console.log()",": inspect values",[23,1795,1796,1799],{},[50,1797,1798],{},"console.table()",": inspect arrays or objects in table form",[23,1801,1802],{},"Open DevTools before judging behavior",[23,1804,1805,1806],{},"Windows\u002FLinux: ",[50,1807,1808],{},"Ctrl+Shift+J",[23,1810,1811,1812],{},"On macOS: ",[50,1813,1814],{},"Cmd+Option+J",[11,1816,1818,1822],{"id":1817,"level":14},"inspection-output-tools",[16,1819,1821],{"id":1820},"why-inspection-tools-help","Why Inspection Tools Help",[89,1823,1824,1842],{"gap":91,"left-width":92,"right-width":92},[94,1825,1826,1829,1832],{"v-slot:left":96},[181,1827,1828],{},"Snippet:",[188,1830],{"language":190,"src":1831},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Finspection-output-tools-06.php",[181,1833,1834,491,1836,1838,1839,1841],{},[50,1835,1763],{},[50,1837,1769],{}," show details ",[50,1840,1754],{}," cannot show clearly:",[94,1843,1844,1847,1850],{"v-slot:right":96},[181,1845,1846],{},"Expected output:",[188,1848],{"language":364,"src":1849},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Finspection-output-tools-07.txt",[20,1851,1852,1857,1863],{},[23,1853,1854,1856],{},[50,1855,1754],{}," can display a value, but it hides structure",[23,1858,1859,1860,1862],{},"Arrays need an inspection tool because ",[50,1861,1754],{}," cannot show array keys, indexes, or nested values",[23,1864,1865,1867],{},[50,1866,1769],{}," is best when type confusion is possible",[11,1869,1871,1874],{"id":1870,"level":14},"defining-variables",[16,1872,1873],{"id":1870},"Defining Variables",[89,1875,1876,1915],{"gap":91,"left-width":92,"right-width":92},[94,1877,1878,1881,1884],{"v-slot:left":96},[98,1879,218],{"id":1880},"php-2",[188,1882],{"language":190,"src":1883},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fdefining-variables-23.php",[20,1885,1886,1891,1894,1899,1909],{},[23,1887,1888,1889],{},"Variable names start with ",[50,1890,1624],{},[23,1892,1893],{},"Names can contain letters, numbers, and underscores",[23,1895,1896,1897],{},"Names cannot start with a number after ",[50,1898,1624],{},[23,1900,1901,1902,491,1905,1908],{},"Case matters: ",[50,1903,1904],{},"$name",[50,1906,1907],{},"$Name"," are different",[23,1910,1911,1914],{},[50,1912,1913],{},"snake_case"," is common in beginner PHP examples",[94,1916,1917,1920,1923],{"v-slot:right":96},[98,1918,227],{"id":1919},"javascript-2",[188,1921],{"language":230,"src":1922},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fdefining-variables-24.js",[20,1924,1925,1928,1934,1940,1946,1954],{},[23,1926,1927],{},"Variables use a keyword before the name",[23,1929,1930,1933],{},[50,1931,1932],{},"let",": value may change",[23,1935,1936,1939],{},[50,1937,1938],{},"const",": value cannot be reassigned",[23,1941,1942,1945],{},[50,1943,1944],{},"var",": older keyword; avoid in new beginner code",[23,1947,1901,1948,491,1951,1908],{},[50,1949,1950],{},"name",[50,1952,1953],{},"Name",[23,1955,1956],{},"See the below slide for the scope differences between these keywords",[11,1958,1960,1964],{"id":1959,"level":454},"variable-scope-keywords",[16,1961,1963],{"id":1962},"javascript-scope-keywords","JavaScript Scope Keywords",[89,1965,1966,1971],{"gap":91,"left-width":263,"right-width":264},[94,1967,1968],{"v-slot:left":96},[188,1969],{"language":230,"src":1970},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fvariable-scope-keywords-18.js",[94,1972,1973,1975],{"v-slot:right":96},[181,1974,682],{},[20,1976,1977,1980,1985,1990,1995,2003],{},[23,1978,1979],{},"Scope means where a variable name can be used or seen in code",[23,1981,1982,1984],{},[50,1983,1932],{},": block-scoped",[23,1986,1987,1989],{},[50,1988,1938],{},": block-scoped and cannot be reassigned",[23,1991,1992,1994],{},[50,1993,1944],{},": function-scoped",[23,1996,1997,1998,491,2000,2002],{},"Prefer ",[50,1999,1932],{},[50,2001,1938],{}," in new code",[23,2004,1901,2005,491,2007,2009],{},[50,2006,1950],{},[50,2008,1953],{}," are different variables",[11,2011,2013,2016],{"id":2012,"level":14},"type-check",[16,2014,2015],{"id":2012},"Type Check",[89,2017,2018,2030],{"gap":91,"left-width":92,"right-width":92},[94,2019,2020,2027],{"v-slot:left":96},[181,2021,2022,2023,2026],{},"Create ",[50,2024,2025],{},"public_html\u002Fm02\u002Flessons\u002Fphp-js-type-check.php",":",[188,2028],{"language":190,"src":2029},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Ftype-check-03.php",[94,2031,2032,2034,2037,2040],{"v-slot:right":96},[181,2033,361],{},[188,2035],{"language":364,"src":2036},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fexample-output-04.txt",[181,2038,2039],{},"Easy mistake:",[20,2041,2042,2050,2053],{},[23,2043,2044,491,2047,2049],{},[50,2045,2046],{},"\"2\"",[50,2048,14],{}," look similar on screen",[23,2051,2052],{},"They are not the same type",[23,2054,2055],{},"Check the type before changing the comparison or math",[11,2057,2059,2063],{"id":2058,"level":14},"common-types",[16,2060,2062],{"id":2061},"common-value-types","Common Value Types",[89,2064,2065,2114],{"gap":91,"left-width":92,"right-width":92},[94,2066,2067,2070,2073],{"v-slot:left":96},[98,2068,218],{"id":2069},"php-3",[188,2071],{"language":190,"src":2072},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fcommon-types-12.php",[20,2074,2075,2099,2102,2105],{},[23,2076,2077,2080,2081,2080,2084,2080,2087,2080,2090,2080,2093,2080,2096],{},[50,2078,2079],{},"string",", ",[50,2082,2083],{},"int",[50,2085,2086],{},"float",[50,2088,2089],{},"bool",[50,2091,2092],{},"array",[50,2094,2095],{},"object",[50,2097,2098],{},"null",[23,2100,2101],{},"Arrays can be ordered lists or key\u002Fvalue maps",[23,2103,2104],{},"Resources represent external handles, such as database connections",[23,2106,2107,491,2110,2113],{},[50,2108,2109],{},"PHP_INT_MAX",[50,2111,2112],{},"PHP_FLOAT_MAX"," show platform limits",[94,2115,2116,2119,2122],{"v-slot:right":96},[98,2117,227],{"id":2118},"javascript-3",[188,2120],{"language":230,"src":2121},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fcommon-types-13.js",[20,2123,2124,2143,2149],{},[23,2125,2126,2080,2128,2080,2131,2080,2134,2080,2136,2080,2138,2080,2140],{},[50,2127,2079],{},[50,2129,2130],{},"number",[50,2132,2133],{},"boolean",[50,2135,2092],{},[50,2137,2095],{},[50,2139,2098],{},[50,2141,2142],{},"undefined",[23,2144,2145,2146,2148],{},"JavaScript uses one ",[50,2147,2130],{}," type for most numeric values",[23,2150,2151,2153,2154,2156],{},[50,2152,2098],{}," is intentional absence; ",[50,2155,2142],{}," usually means no value was assigned",[11,2158,2160,2163],{"id":2159,"level":14},"php-string-examples",[16,2161,2162],{"id":2159},"PHP String Examples",[89,2164,2165,2170],{"gap":91,"left-width":263,"right-width":264},[94,2166,2167],{"v-slot:left":96},[188,2168],{"language":190,"src":2169},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fphp-string-examples-19.php",[94,2171,2172,2175],{"v-slot:right":96},[181,2173,2174],{},"Key differences:",[20,2176,2177,2180,2195,2201,2207],{},[23,2178,2179],{},"Double quotes can interpolate variables",[23,2181,2182,2183],{},"Single quotes do not interpolate variables\n",[20,2184,2185],{},[23,2186,2187,2188,491,2191,2194],{},"Escapes such as ",[50,2189,2190],{},"\\\\",[50,2192,2193],{},"\\'"," still have special meaning",[23,2196,2197,2200],{},[50,2198,2199],{},"."," joins strings in PHP",[23,2202,2203,2206],{},[50,2204,2205],{},"+"," is math, not PHP string joining",[23,2208,2209,2210],{},"If a string is used in math, PHP may try to convert it to a number first\n",[20,2211,2212],{},[23,2213,183,2214,2216],{},[50,2215,1769],{}," to confirm the value and type before changing the expression",[11,2218,2220,2223],{"id":2219,"level":14},"php-number-examples",[16,2221,2222],{"id":2219},"PHP Number Examples",[89,2224,2225,2230],{"gap":91,"left-width":92,"right-width":92},[94,2226,2227],{"v-slot:left":96},[188,2228],{"language":190,"src":2229},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fphp-number-examples-20.php",[94,2231,2232,2234],{"v-slot:right":96},[181,2233,682],{},[20,2235,2236,2239,2242,2251,2259,2265,2268],{},[23,2237,2238],{},"Integers are whole numbers",[23,2240,2241],{},"Floats use decimals",[23,2243,2244,2247,2248],{},[50,2245,2246],{},"++",": shorthand to increase a number by ",[50,2249,2250],{},"1",[23,2252,2253,2256,2257],{},[50,2254,2255],{},"--",": shorthand to decrease a number by ",[50,2258,2250],{},[23,2260,2261,2264],{},[50,2262,2263],{},"+=",": shorthand to add a value and store the result",[23,2266,2267],{},"Float math can have precision surprises",[23,2269,183,2270,2272],{},[50,2271,1769],{}," when printed output hides detail",[11,2274,2276,2279],{"id":2275,"level":14},"php-array-examples",[16,2277,2278],{"id":2275},"PHP Array Examples",[89,2280,2281,2286],{"gap":91,"left-width":263,"right-width":264},[94,2282,2283],{"v-slot:left":96},[188,2284],{"language":190,"src":2285},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fphp-array-examples-21.php",[94,2287,2288,2291],{"v-slot:right":96},[181,2289,2290],{},"Array shapes:",[20,2292,2293,2296,2299,2305,2313],{},[23,2294,2295],{},"Indexed array: values by numeric position",[23,2297,2298],{},"Associative array: values by named key",[23,2300,2301,2302],{},"Indexes start at ",[50,2303,2304],{},"0",[23,2306,2307,2309,2310,2312],{},[50,2308,1769],{}," or ",[50,2311,1763],{}," shows structure",[23,2314,2315,2318,2319],{},[50,2316,2317],{},"echo $array"," cannot print the full array structure\n",[20,2320,2321],{},[23,2322,2323,2324,2326,2327,2309,2329,2331],{},"PHP only has a single value slot for ",[50,2325,1754],{},", so use ",[50,2328,1769],{},[50,2330,1763],{}," to see keys and nested values",[11,2333,2335,2339],{"id":2334,"level":14},"javascript-typeof-examples",[16,2336,2338],{"id":2337},"javascript-type-examples","JavaScript Type Examples",[89,2340,2341,2346],{"gap":91,"left-width":263,"right-width":264},[94,2342,2343],{"v-slot:left":96},[188,2344],{"language":230,"src":2345},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fjavascript-typeof-examples-22.js",[94,2347,2348,2350],{"v-slot:right":96},[181,2349,682],{},[20,2351,2352,2358,2374,2386,2391],{},[23,2353,2354,2357],{},[50,2355,2356],{},"typeof"," helps identify primitive types",[23,2359,2360,2361,2363],{},"Arrays report as ",[50,2362,2095],{},[20,2364,2365,2368],{},[23,2366,2367],{},"Arrays are a specialized kind of object in JavaScript",[23,2369,183,2370,2373],{},[50,2371,2372],{},"Array.isArray(value)"," when you need to know if the value is an array",[23,2375,2376,2378,2379,2381],{},[50,2377,2098],{}," also reports as ",[50,2380,2095],{},[20,2382,2383],{},[23,2384,2385],{},"This is old JavaScript behavior kept for compatibility",[23,2387,2388,2390],{},[50,2389,2098],{},": a deliberately assigned empty value",[23,2392,2393,2395],{},[50,2394,2142],{},": a missing or not-yet-assigned value",[11,2397,2399,2402],{"id":2398,"level":14},"string-joining",[16,2400,2401],{"id":2398},"String Joining",[89,2403,2404,2423],{"gap":91,"left-width":92,"right-width":92},[94,2405,2406,2409,2412],{"v-slot:left":96},[98,2407,218],{"id":2408},"php-4",[188,2410],{"language":190,"src":2411},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fphp-05.php",[20,2413,2414,2418],{},[23,2415,2416,2200],{},[50,2417,2199],{},[23,2419,2420,2422],{},[50,2421,2205],{}," is for math",[94,2424,2425,2428,2431],{"v-slot:right":96},[98,2426,227],{"id":2427},"javascript-4",[188,2429],{"language":230,"src":2430},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fjavascript-06.js",[20,2432,2433,2436],{},[23,2434,2435],{},"Template literals use backticks",[23,2437,2438,2440],{},[50,2439,2205],{}," can join strings in JavaScript",[11,2442,2444,2447],{"id":2443,"level":14},"operators-and-equality",[16,2445,2446],{"id":2443},"Operators And Equality",[89,2448,2449,2479],{"gap":91,"left-width":92,"right-width":92},[94,2450,2451,2454,2457],{"v-slot:left":96},[98,2452,218],{"id":2453},"php-5",[188,2455],{"language":190,"src":2456},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Foperators-and-equality-14.php",[20,2458,2459,2464,2468,2474],{},[23,2460,2461,2463],{},[50,2462,2199],{}," joins strings",[23,2465,2466,2422],{},[50,2467,2205],{},[23,2469,2470,2473],{},[50,2471,2472],{},"=="," checks loose equality and can convert types",[23,2475,2476,2478],{},[50,2477,386],{}," checks value and type",[94,2480,2481,2484,2487],{"v-slot:right":96},[98,2482,227],{"id":2483},"javascript-5",[188,2485],{"language":230,"src":2486},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Foperators-and-equality-15.js",[20,2488,2489,2494,2499,2503],{},[23,2490,2491,2492],{},"Template literals are usually clearer than ",[50,2493,2205],{},[23,2495,2496,2498],{},[50,2497,2205],{}," can do math or string joining",[23,2500,2501,2473],{},[50,2502,2472],{},[23,2504,2505,2478],{},[50,2506,386],{},[11,2508,2510,2513],{"id":2509,"level":14},"operator-categories",[16,2511,2512],{"id":2509},"Operator Categories",[89,2514,2515,2586],{"gap":91,"left-width":92,"right-width":92},[94,2516,2517,2521],{"v-slot:left":96},[98,2518,2520],{"id":2519},"common-in-both","Common In Both",[20,2522,2523,2554,2569],{},[23,2524,2525,2526],{},"Arithmetic operators",[20,2527,2528,2533,2539,2545,2550],{},[23,2529,2530,2532],{},[50,2531,2205],{},": addition",[23,2534,2535,2538],{},[50,2536,2537],{},"-",": subtraction",[23,2540,2541,2544],{},[50,2542,2543],{},"*",": multiplication",[23,2546,2547,2549],{},[50,2548,705],{},": division",[23,2551,2552,376],{},[50,2553,375],{},[23,2555,2556,2557],{},"Equality operators",[20,2558,2559,2564],{},[23,2560,2561,2563],{},[50,2562,2472],{},": loose equality; may convert types",[23,2565,2566,2568],{},[50,2567,386],{},": strict equality; checks value and type",[23,2570,2571,2572],{},"Inequality operators",[20,2573,2574,2580],{},[23,2575,2576,2579],{},[50,2577,2578],{},"!=",": loose inequality",[23,2581,2582,2585],{},[50,2583,2584],{},"!==",": strict inequality",[94,2587,2588,2617,2640,2654],{"v-slot:right":96},[23,2589,2590,2591],{},"Comparison operators\n",[20,2592,2593,2599,2605,2611],{},[23,2594,2595,2598],{},[50,2596,2597],{},">",": greater than",[23,2600,2601,2604],{},[50,2602,2603],{},"\u003C",": less than",[23,2606,2607,2610],{},[50,2608,2609],{},">=",": greater than or equal to",[23,2612,2613,2616],{},[50,2614,2615],{},"\u003C=",": less than or equal to",[23,2618,2619,2620],{},"Logical operators\n",[20,2621,2622,2628,2634],{},[23,2623,2624,2627],{},[50,2625,2626],{},"&&",": both sides must be true",[23,2629,2630,2633],{},[50,2631,2632],{},"||",": at least one side must be true",[23,2635,2636,2639],{},[50,2637,2638],{},"!",": flips true to false or false to true",[23,2641,2642,2643,2646],{},"Ternary operator: ",[50,2644,2645],{},"condition ? valueA : valueB",[20,2647,2648,2651],{},[23,2649,2650],{},"Short way to choose between two values",[23,2652,2653],{},"Avoid nested ternaries when readability suffers",[23,2655,2656,2657],{},"String joining\n",[20,2658,2659,2664],{},[23,2660,2661,2662],{},"PHP uses ",[50,2663,2199],{},[23,2665,2666,2667],{},"JavaScript usually uses template literals or ",[50,2668,2205],{},[11,2670,2672,2675,2678],{"id":2671,"level":14},"type-conversion-examples",[16,2673,2674],{"id":2671},"Type Conversion Examples",[181,2676,2677],{},"Type conversion means a value is treated as a different type.",[89,2679,2680,2714],{"gap":91,"left-width":92,"right-width":92},[94,2681,2682,2685,2688],{"v-slot:left":96},[98,2683,218],{"id":2684},"php-6",[188,2686],{"language":190,"src":2687},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Ftype-conversion-examples-25.php",[20,2689,2690,2696,2702,2708],{},[23,2691,2692,2695],{},[50,2693,2694],{},"(int)"," turns numeric text into an integer",[23,2697,2698,2701],{},[50,2699,2700],{},"(float)"," turns decimal text into a float",[23,2703,2704,2707],{},[50,2705,2706],{},"(string)"," turns a value into text",[23,2709,2710,2713],{},[50,2711,2712],{},"explode()"," can split text into an array",[94,2715,2716,2719,2722],{"v-slot:right":96},[98,2717,227],{"id":2718},"javascript-6",[188,2720],{"language":230,"src":2721},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Ftype-conversion-examples-26.js",[20,2723,2724,2730,2736,2742],{},[23,2725,2726,2729],{},[50,2727,2728],{},"Number()"," turns numeric text into a number",[23,2731,2732,2735],{},[50,2733,2734],{},"parseFloat()"," reads decimal text as a number",[23,2737,2738,2741],{},[50,2739,2740],{},"Boolean()"," turns truthy\u002Ffalsy values into a boolean",[23,2743,2744,2713],{},[50,2745,2746],{},"split()",[11,2748,2750,2753],{"id":2749,"level":14},"php-error-reading",[16,2751,2752],{"id":2749},"PHP Error Reading",[20,2754,2755,2758,2761,2764,2767,2770],{},[23,2756,2757],{},"Start from a page that already worked",[23,2759,2760],{},"Break one line on purpose only while practicing",[23,2762,2763],{},"Read the newest error entry before changing code",[23,2765,2766],{},"Extract the error type, file path, and line number",[23,2768,2769],{},"Check the reported line and the line above it",[23,2771,2772],{},"See the slides below for common error examples and the fix loop",[11,2774,2776,2780],{"id":2775,"level":454},"syntax-error-example",[16,2777,2779],{"id":2778},"example-syntax-error","Example: Syntax Error",[89,2781,2782,2796],{"gap":91,"left-width":92,"right-width":92},[94,2783,2784,2787,2790,2793],{"v-slot:left":96},[181,2785,2786],{},"Working line:",[188,2788],{"language":190,"src":2789},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fbreak-one-line-on-purpos-02.php",[181,2791,2792],{},"Broken line:",[188,2794],{"language":190,"src":2795},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fbreak-one-line-on-purpos-03.php",[94,2797,2798,2801],{"v-slot:right":96},[181,2799,2800],{},"What changed:",[20,2802,2803,2806,2809,2812,2815],{},[23,2804,2805],{},"Removed the semicolon",[23,2807,2808],{},"PHP statement is no longer complete",[23,2810,2811],{},"The browser may show a server error or blank output",[23,2813,2814],{},"Keep the change small so the clue points to one likely cause",[23,2816,2817],{},"Next slide shows how to check the error",[11,2819,2821,2824],{"id":2820,"level":454},"server-error-log",[16,2822,2823],{"id":2820},"Server Error Log",[89,2825,2826,2838],{"gap":91,"left-width":92,"right-width":92},[94,2827,2828,2831,2835],{"v-slot:left":96},[181,2829,2830],{},"If the local server uses Apache, run inside Ubuntu:",[188,2832],{"language":2833,"src":2834},"bash","\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fread-the-apache-error-lo-04.sh",[181,2836,2837],{},"Read the newest entry after each refresh.",[94,2839,2840,2843,2846],{"v-slot:right":96},[181,2841,2842],{},"Look for:",[188,2844],{"language":364,"src":2845},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fexample-output-05.txt",[20,2847,2848,2851,2854,2857],{},[23,2849,2850],{},"Error type",[23,2852,2853],{},"File path",[23,2855,2856],{},"Line number",[23,2858,2859],{},"Nearby token or variable name",[11,2861,2863,2867],{"id":2862,"level":454},"undefined-variable",[16,2864,2866],{"id":2865},"example-undefined-variable","Example: Undefined Variable",[89,2868,2869,2877],{"gap":91,"left-width":92,"right-width":92},[94,2870,2871,2874],{"v-slot:left":96},[181,2872,2873],{},"Broken code:",[188,2875],{"language":190,"src":2876},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fundefined-variable-15.php",[94,2878,2879,2882,2885],{"v-slot:right":96},[181,2880,2881],{},"Likely message:",[188,2883],{"language":364,"src":2884},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fundefined-variable-output-16.txt",[20,2886,2887,2896,2899],{},[23,2888,2889,491,2892,2895],{},[50,2890,2891],{},"$courseCode",[50,2893,2894],{},"$coursecode"," are different names",[23,2897,2898],{},"The page may keep running, but the output is wrong",[23,2900,2901],{},"Fix the variable name that does not match",[11,2903,2905,2909],{"id":2904,"level":454},"undefined-function",[16,2906,2908],{"id":2907},"example-undefined-function","Example: Undefined Function",[89,2910,2911,2918],{"gap":91,"left-width":92,"right-width":92},[94,2912,2913,2915],{"v-slot:left":96},[181,2914,2873],{},[188,2916],{"language":190,"src":2917},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fundefined-function-17.php",[94,2919,2920,2922,2925],{"v-slot:right":96},[181,2921,2881],{},[188,2923],{"language":364,"src":2924},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fundefined-function-output-18.txt",[20,2926,2927,2930,2933],{},[23,2928,2929],{},"PHP found a function call it does not know",[23,2931,2932],{},"Check spelling first",[23,2934,2935],{},"Then check whether the file that defines the function was included",[11,2937,2939,2942,2961],{"id":2938,"level":454},"debugging-loop",[16,2940,2941],{"id":2938},"Debugging Loop",[928,2943,2944,2947,2950,2953,2956,2958],{},[23,2945,2946],{},"Reproduce the issue",[23,2948,2949],{},"Read the newest error message",[23,2951,2952],{},"Identify file and line",[23,2954,2955],{},"Check that line and the line above it",[23,2957,941],{},[23,2959,2960],{},"Retest the same URL",[395,2962,2963],{"type":397},[181,2964,2965],{},"Change one thing, then retest. Several edits at once make it harder to know which line caused the new result.",[11,2967,2969,2972,2975,2978,2981],{"id":2968,"level":14},"predict-the-output",[16,2970,2971],{"id":2968},"Predict The Output",[181,2973,2974],{},"Before running this, decide what each line prints:",[188,2976],{"language":190,"src":2977},"\u002Fgenerated-snippets\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript\u002Fpredict-the-output-09.php",[181,2979,2980],{},"Then run it and compare.",[181,2982,2983],{},"The goal is to check assumptions with evidence rather than trying to memorize every conversion.",[11,2985,2986,2988],{"id":1061,"level":14},[16,2987,1064],{"id":1061},[20,2989,2990,2996,2999,3002,3008,3011,3014,3021,3027,3032],{},[23,2991,2992,2993,2995],{},"Which language runs first when a ",[50,2994,1541],{}," page is requested?",[23,2997,2998],{},"Which tool shows PHP type and value?",[23,3000,3001],{},"Which tool shows JavaScript console output?",[23,3003,1110,3004,491,3006,1086],{},[50,3005,2046],{},[50,3007,14],{},[23,3009,3010],{},"What does raw PHP in the browser usually mean?",[23,3012,3013],{},"What is the PHP operator for joining strings?",[23,3015,3016,3017,2309,3019,1086],{},"What does JavaScript have that PHP does not: ",[50,3018,2098],{},[50,3020,2142],{},[23,3022,3023,3024,3026],{},"Why can ",[50,3025,2356],{}," on a JavaScript array surprise beginners?",[23,3028,3029,3030,1086],{},"Why do PHP variables start with ",[50,3031,1624],{},[23,3033,3034],{},"Why should error reading start with the newest log entry?",[11,3036,3037,3039],{"id":1120,"level":14},[16,3038,1124],{"id":1123},[928,3040,3041,3045,3049,3053,3058,3064,3072],{},[23,3042,1129,3043],{},[50,3044,80],{},[23,3046,1134,3047],{},[50,3048,1137],{},[23,3050,1140,3051],{},[50,3052,1143],{},[23,3054,1146,3055],{},[50,3056,3057],{},"git push origin Module02-PHP-vs-JS",[23,3059,1152,3060,1155,3062,1159],{},[50,3061,1410],{},[50,3063,1158],{},[23,3065,1162,3066,1165,3068,1155,3070],{},[50,3067,1158],{},[50,3069,1158],{},[50,3071,1170],{},[23,3073,1173,3074,1177,3076],{},[50,3075,1176],{},[50,3077,1180],{},[11,3079,3080,3082],{"id":1183,"level":14},[16,3081,1186],{"id":1183},[20,3083,3084,3087,3090,3093,3096,3099],{},[23,3085,3086],{},"PHP runs on the server before the browser receives the response",[23,3088,3089],{},"JavaScript usually runs in the browser after the page loads",[23,3091,3092],{},"Output and inspection tools show different details depending on where the code runs",[23,3094,3095],{},"Type checks help explain why similar-looking values can behave differently",[23,3097,3098],{},"Error reading starts with the newest message, file path, and line number",[23,3100,3101,3102,491,3104],{},"Lesson work should end with a reviewed branch merge through ",[50,3103,1158],{},[50,3105,1170],{},[11,3107,3108,3110],{"id":1211,"level":14},[16,3109,1215],{"id":1214},[89,3111,3112,3152],{"gap":91,"left-width":92,"right-width":92},[94,3113,3114,3116,3122,3128,3134,3140,3146],{"v-slot:left":96},[98,3115,1222],{"id":1211},[181,3117,3118,3121],{},[1226,3119,3120],{},"Runtime"," - The place where code executes",[181,3123,3124,3127],{},[1226,3125,3126],{},"Type"," - The kind of value, such as string, integer, boolean, array, or null",[181,3129,3130,3133],{},[1226,3131,3132],{},"Console"," - Browser developer tool panel for JavaScript output",[181,3135,3136,3139],{},[1226,3137,3138],{},"Strict comparison"," - Comparison that checks value and type",[181,3141,3142,3145],{},[1226,3143,3144],{},"Undefined"," - JavaScript value used when a variable or property has no assigned value",[181,3147,3148,3151],{},[1226,3149,3150],{},"Parse error"," - PHP could not understand the code structure",[94,3153,3154,3156],{"v-slot:right":96},[98,3155,1253],{"id":1252},[20,3157,3158,3165,3172,3179,3186,3193,3200],{},[23,3159,3160],{},[1259,3161,3164],{"href":3162,"rel":3163},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Flanguage.basic-syntax.php",[1263],"PHP Manual: Basic syntax",[23,3166,3167],{},[1259,3168,3171],{"href":3169,"rel":3170},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Flanguage.types.type-juggling.php",[1263],"PHP Manual: Type juggling",[23,3173,3174],{},[1259,3175,3178],{"href":3176,"rel":3177},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Flanguage.operators.php",[1263],"PHP Manual: Operators",[23,3180,3181],{},[1259,3182,3185],{"href":3183,"rel":3184},"https:\u002F\u002Fwww.php.net\u002Fmanual\u002Fen\u002Flanguage.errors.php",[1263],"PHP Manual: Errors",[23,3187,3188],{},[1259,3189,3192],{"href":3190,"rel":3191},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript\u002FData_structures",[1263],"MDN: JavaScript data types",[23,3194,3195],{},[1259,3196,3199],{"href":3197,"rel":3198},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript\u002FReference\u002FOperators\u002Ftypeof",[1263],"MDN: typeof",[23,3201,3202],{},[1259,3203,3206],{"href":3204,"rel":3205},"https:\u002F\u002Fdeveloper.mozilla.org\u002Fen-US\u002Fdocs\u002FWeb\u002FJavaScript\u002FEquality_comparisons_and_sameness",[1263],"MDN: Equality comparisons",{"title":96,"searchDepth":1301,"depth":1301,"links":3208},[3209,3210,3211,3212,3213,3214,3215,3216,3217,3218,3219,3220,3221,3222,3223,3224,3225,3226,3227,3228,3229,3230,3231,3232,3233,3234,3235,3236,3237,3238,3239,3240,3241],{"id":13,"depth":1301,"text":18},{"id":40,"depth":1301,"text":43},{"id":1430,"depth":1301,"text":1433},{"id":1468,"depth":1301,"text":1469},{"id":1519,"depth":1301,"text":1522},{"id":1589,"depth":1301,"text":1592},{"id":1599,"depth":1301,"text":1602},{"id":1666,"depth":1301,"text":1444},{"id":1735,"depth":1301,"text":1736},{"id":1820,"depth":1301,"text":1821},{"id":1870,"depth":1301,"text":1873},{"id":1962,"depth":1301,"text":1963},{"id":2012,"depth":1301,"text":2015},{"id":2061,"depth":1301,"text":2062},{"id":2159,"depth":1301,"text":2162},{"id":2219,"depth":1301,"text":2222},{"id":2275,"depth":1301,"text":2278},{"id":2337,"depth":1301,"text":2338},{"id":2398,"depth":1301,"text":2401},{"id":2443,"depth":1301,"text":2446},{"id":2509,"depth":1301,"text":2512},{"id":2671,"depth":1301,"text":2674},{"id":2749,"depth":1301,"text":2752},{"id":2778,"depth":1301,"text":2779},{"id":2820,"depth":1301,"text":2823},{"id":2865,"depth":1301,"text":2866},{"id":2907,"depth":1301,"text":2908},{"id":2938,"depth":1301,"text":2941},{"id":2968,"depth":1301,"text":2971},{"id":1061,"depth":1301,"text":1064},{"id":1123,"depth":1301,"text":1124},{"id":1183,"depth":1301,"text":1186},{"id":1214,"depth":1301,"text":1215},"Compare where PHP and JavaScript run, how each language stores and prints values, and how to read beginner PHP errors.","Face-to-face class of about 40 students; includes comparison prompts, short coding checks, browser output checks, and controlled debugging examples.","15","70","85",{},"\u002Finternet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript",{"title":1372,"description":3242},"internet-applications\u002Fpresentations\u002F02-php-and-javascript-basics\u002F01-compare-php-and-javascript",[190,226,3252,3253],"syntax","debugging","1:16:00","-tJOAgjl6XU","https:\u002F\u002Fyoutu.be\u002F-tJOAgjl6XU","Comparing PHP and JavaScript","sFnFWEQxWJ5G4aR3awi7HQRy4HpMeqT5B4JOTjWhUvI",{"id":4,"title":5,"audience":6,"body":3260,"contentType":1342,"course":1343,"description":1344,"estimateBasis":1345,"estimatedDiscussionMinutes":1346,"estimatedLiveMinutes":1347,"estimatedTotalMinutes":1348,"extension":1349,"meta":4220,"module":14,"navigation":1351,"order":1352,"path":1353,"promptAssist":1354,"seo":4221,"status":1356,"stem":1357,"tags":4222,"videoDuration":1362,"videoId":1363,"videoLink":1364,"videoTitle":1365,"week":14,"__hash__":1366},{"type":8,"value":3261,"toc":4190},[3262,3278,3306,3364,3390,3426,3458,3494,3526,3572,3606,3654,3684,3724,3760,3794,3828,3860,3890,3920,3942,3964,3980,4000,4022,4066,4108,4128],[11,3263,3264,3266],{"id":13,"level":14},[16,3265,18],{"id":13},[20,3267,3268,3270,3272,3274,3276],{},[23,3269,25],{},[23,3271,28],{},[23,3273,31],{},[23,3275,34],{},[23,3277,37],{},[11,3279,3280,3282],{"id":40,"level":14},[16,3281,43],{"id":40},[20,3283,3284,3288,3292,3294,3300,3302],{},[23,3285,48,3286],{},[50,3287,52],{},[23,3289,55,3290],{},[50,3291,58],{},[23,3293,61],{},[23,3295,64,3296,68,3298],{},[50,3297,67],{},[50,3299,71],{},[23,3301,74],{},[23,3303,77,3304,81],{},[50,3305,80],{},[11,3307,3308,3310],{"id":84,"level":14},[16,3309,87],{"id":84},[89,3311,3312,3336],{"gap":91,"left-width":92,"right-width":92},[94,3313,3314,3316],{"v-slot:left":96},[98,3315,101],{"id":100},[20,3317,3318,3322,3326,3330,3334],{},[23,3319,3320,109],{},[50,3321,108],{},[23,3323,3324,115],{},[50,3325,114],{},[23,3327,3328,121],{},[50,3329,120],{},[23,3331,3332,127],{},[50,3333,126],{},[23,3335,130],{},[94,3337,3338,3340],{"v-slot:right":96},[98,3339,136],{"id":135},[20,3341,3342,3346,3350,3354,3358,3362],{},[23,3343,3344,109],{},[50,3345,108],{},[23,3347,3348,115],{},[50,3349,114],{},[23,3351,3352,121],{},[50,3353,120],{},[23,3355,3356,156],{},[50,3357,155],{},[23,3359,3360,162],{},[50,3361,161],{},[23,3363,165],{},[11,3365,3366,3372],{"id":168,"level":14},[16,3367,3368,173,3370],{"id":168},[50,3369,108],{},[50,3371,126],{},[89,3373,3374,3382],{"gap":91,"left-width":92,"right-width":92},[94,3375,3376,3380],{"v-slot:left":96},[181,3377,183,3378,186],{},[50,3379,108],{},[188,3381],{"language":190,"src":191},[94,3383,3384,3388],{"v-slot:right":96},[181,3385,183,3386,198],{},[50,3387,126],{},[188,3389],{"language":190,"src":201},[11,3391,3392,3398],{"id":204,"level":14},[16,3393,3394,209,3396],{"id":204},[50,3395,114],{},[50,3397,120],{},[89,3399,3400,3406],{"gap":91,"left-width":92,"right-width":92},[94,3401,3402,3404],{"v-slot:left":96},[98,3403,218],{"id":190},[188,3405],{"language":190,"src":221},[94,3407,3408,3410,3412,3414],{"v-slot:right":96},[98,3409,227],{"id":226},[188,3411],{"language":230,"src":231},[181,3413,234],{},[20,3415,3416,3418,3420,3422],{},[23,3417,239],{},[23,3419,242],{},[23,3421,245],{},[23,3423,3424,250],{},[50,3425,120],{},[11,3427,3428,3432],{"id":253,"level":14},[16,3429,257,3430,260],{"id":256},[50,3431,126],{},[89,3433,3434,3438],{"gap":91,"left-width":263,"right-width":264},[94,3435,3436],{"v-slot:left":96},[188,3437],{"language":190,"src":269},[94,3439,3440,3442],{"v-slot:right":96},[181,3441,274],{},[20,3443,3444,3448,3452,3454,3456],{},[23,3445,3446,282],{},[50,3447,281],{},[23,3449,3450,288],{},[50,3451,287],{},[23,3453,291],{},[23,3455,294],{},[23,3457,297],{},[11,3459,3460,3466],{"id":300,"level":14},[16,3461,304,3462,173,3464],{"id":303},[50,3463,161],{},[50,3465,155],{},[89,3467,3468,3472],{"gap":91,"left-width":263,"right-width":264},[94,3469,3470],{"v-slot:left":96},[188,3471],{"language":230,"src":315},[94,3473,3474,3476],{"v-slot:right":96},[181,3475,320],{},[20,3477,3478,3482,3486,3490],{},[23,3479,3480,327],{},[50,3481,155],{},[23,3483,3484,332],{},[50,3485,161],{},[23,3487,183,3488,337],{},[50,3489,155],{},[23,3491,3492,342],{},[50,3493,161],{},[11,3495,3496,3498],{"id":345,"level":14},[16,3497,349],{"id":348},[89,3499,3500,3504],{"gap":91,"left-width":92,"right-width":92},[94,3501,3502],{"v-slot:left":96},[188,3503],{"language":190,"src":356},[94,3505,3506,3508,3510,3512],{"v-slot:right":96},[181,3507,361],{},[188,3509],{"language":364,"src":365},[181,3511,368],{},[20,3513,3514,3518,3522],{},[23,3515,3516,376],{},[50,3517,375],{},[23,3519,3520,381],{},[50,3521,126],{},[23,3523,3524,387],{},[50,3525,386],{},[11,3527,3528,3530,3534],{"id":390,"level":14},[16,3529,393],{"id":390},[395,3531,3532],{"type":397},[181,3533,400],{},[89,3535,3536,3554],{"gap":91,"left-width":92,"right-width":92},[94,3537,3538,3542,3544],{"v-slot:left":96},[98,3539,408,3540],{"id":407},[50,3541,114],{},[188,3543],{"language":190,"src":413},[20,3545,3546,3548,3552],{},[23,3547,418],{},[23,3549,3550,424],{},[50,3551,423],{},[23,3553,427],{},[94,3555,3556,3560,3562],{"v-slot:right":96},[98,3557,408,3558],{"id":432},[50,3559,108],{},[188,3561],{"language":190,"src":437},[20,3563,3564,3568,3570],{},[23,3565,3566,445],{},[50,3567,444],{},[23,3569,448],{},[23,3571,427],{},[11,3573,3574,3576],{"id":453,"level":454},[16,3575,457],{"id":453},[89,3577,3578,3582],{"gap":91,"left-width":460,"right-width":461},[94,3579,3580],{"v-slot:left":96},[188,3581],{"language":190,"src":466},[94,3583,3584,3586],{"v-slot:right":96},[181,3585,471],{},[20,3587,3588,3592,3596,3602,3604],{},[23,3589,3590,479],{},[50,3591,478],{},[23,3593,3594,485],{},[50,3595,484],{},[23,3597,3598,491,3600,494],{},[50,3599,490],{},[50,3601,478],{},[23,3603,497],{},[23,3605,500],{},[11,3607,3608,3610],{"id":503,"level":14},[16,3609,506],{"id":503},[89,3611,3612,3636],{"gap":91,"left-width":92,"right-width":92},[94,3613,3614,3616],{"v-slot:left":96},[98,3615,514],{"id":513},[20,3617,3618,3622,3628,3632],{},[23,3619,3620,522],{},[50,3621,521],{},[23,3623,3624,528,3626,532],{},[50,3625,527],{},[50,3627,531],{},[23,3629,3630,538],{},[50,3631,537],{},[23,3633,3634,544],{},[50,3635,543],{},[94,3637,3638,3640],{"v-slot:right":96},[98,3639,550],{"id":549},[20,3641,3642,3644,3646,3652],{},[23,3643,555],{},[23,3645,558],{},[23,3647,3648,563,3650],{},[50,3649,543],{},[50,3651,566],{},[23,3653,569],{},[11,3655,3656,3658],{"id":572,"level":14},[16,3657,575],{"id":572},[89,3659,3660,3664],{"gap":91,"left-width":92,"right-width":92},[94,3661,3662],{"v-slot:left":96},[188,3663],{"language":190,"src":582},[94,3665,3666,3668,3670,3672],{"v-slot:right":96},[181,3667,361],{},[188,3669],{"language":364,"src":589},[181,3671,368],{},[20,3673,3674,3676,3678,3680],{},[23,3675,596],{},[23,3677,599],{},[23,3679,602],{},[23,3681,3682,607],{},[50,3683,527],{},[11,3685,3686,3688],{"id":610,"level":14},[16,3687,613],{"id":610},[89,3689,3690,3694],{"gap":91,"left-width":92,"right-width":92},[94,3691,3692],{"v-slot:left":96},[188,3693],{"language":190,"src":620},[94,3695,3696,3698,3712,3714],{"v-slot:right":96},[181,3697,625],{},[20,3699,3700,3706,3708],{},[23,3701,3702,633,3704],{},[50,3703,632],{},[50,3705,636],{},[23,3707,639],{},[23,3709,3710,645],{},[50,3711,644],{},[181,3713,648],{},[20,3715,3716,3718,3720],{},[23,3717,653],{},[23,3719,656],{},[23,3721,659,3722,662],{},[50,3723,644],{},[11,3725,3726,3730],{"id":665,"level":14},[16,3727,3728,670],{"id":665},[50,3729,543],{},[89,3731,3732,3736],{"gap":91,"left-width":92,"right-width":92},[94,3733,3734],{"v-slot:left":96},[188,3735],{"language":190,"src":677},[94,3737,3738,3740],{"v-slot:right":96},[181,3739,682],{},[20,3741,3742,3746,3750,3754],{},[23,3743,3744,689],{},[50,3745,543],{},[23,3747,3748,694],{},[50,3749,566],{},[23,3751,3752,700],{},[50,3753,699],{},[23,3755,183,3756,705,3758,708],{},[50,3757,521],{},[50,3759,527],{},[11,3761,3762,3768],{"id":711,"level":14},[16,3763,715,3764,718,3766],{"id":714},[50,3765,566],{},[50,3767,543],{},[89,3769,3770,3774],{"gap":91,"left-width":92,"right-width":92},[94,3771,3772],{"v-slot:left":96},[188,3773],{"language":190,"src":727},[94,3775,3776,3778],{"v-slot:right":96},[181,3777,732],{},[20,3779,3780,3784,3788,3792],{},[23,3781,3782,740],{},[50,3783,739],{},[23,3785,743,3786,746],{},[50,3787,566],{},[23,3789,3790,752],{},[50,3791,751],{},[23,3793,755],{},[11,3795,3796,3802],{"id":758,"level":14},[16,3797,3798,209,3800],{"id":758},[50,3799,566],{},[50,3801,765],{},[89,3803,3804,3808],{"gap":91,"left-width":92,"right-width":92},[94,3805,3806],{"v-slot:left":96},[188,3807],{"language":190,"src":772},[94,3809,3810,3812,3814,3816],{"v-slot:right":96},[181,3811,361],{},[188,3813],{"language":364,"src":779},[181,3815,368],{},[20,3817,3818,3822,3826],{},[23,3819,3820,788],{},[50,3821,765],{},[23,3823,3824,793],{},[50,3825,566],{},[23,3827,796],{},[11,3829,3830,3836],{"id":799,"level":14},[16,3831,3832,209,3834,807],{"id":802},[50,3833,566],{},[50,3835,765],{},[89,3837,3838,3842],{"gap":91,"left-width":92,"right-width":92},[94,3839,3840],{"v-slot:left":96},[188,3841],{"language":230,"src":814},[94,3843,3844,3846],{"v-slot:right":96},[181,3845,819],{},[20,3847,3848,3852,3856,3858],{},[23,3849,3850,826],{},[50,3851,765],{},[23,3853,3854,831],{},[50,3855,566],{},[23,3857,834],{},[23,3859,837],{},[11,3861,3862,3864],{"id":840,"level":14},[16,3863,843],{"id":840},[89,3865,3866,3870],{"gap":91,"left-width":92,"right-width":92},[94,3867,3868],{"v-slot:left":96},[188,3869],{"language":190,"src":850},[94,3871,3872,3874,3876,3878],{"v-slot:right":96},[181,3873,361],{},[188,3875],{"language":364,"src":857},[181,3877,368],{},[20,3879,3880,3882,3884,3888],{},[23,3881,864],{},[23,3883,867],{},[23,3885,3886,873],{},[50,3887,872],{},[23,3889,876],{},[11,3891,3892,3894],{"id":879,"level":14},[16,3893,883],{"id":882},[89,3895,3896,3900],{"gap":91,"left-width":92,"right-width":92},[94,3897,3898],{"v-slot:left":96},[188,3899],{"language":230,"src":890},[94,3901,3902,3904,3912,3914],{"v-slot:right":96},[181,3903,895],{},[20,3905,3906,3908,3910],{},[23,3907,900],{},[23,3909,903],{},[23,3911,906],{},[181,3913,909],{},[20,3915,3916,3918],{},[23,3917,914],{},[23,3919,917],{},[11,3921,3922,3924,3926,3938],{"id":920,"level":14},[16,3923,923],{"id":920},[181,3925,926],{},[928,3927,3928,3930,3932,3934,3936],{},[23,3929,932],{},[23,3931,935],{},[23,3933,938],{},[23,3935,941],{},[23,3937,944],{},[395,3939,3940],{"type":397},[181,3941,949],{},[11,3943,3944,3946],{"id":952,"level":14},[16,3945,955],{"id":952},[20,3947,3948,3952,3956,3960,3962],{},[23,3949,3950,963],{},[50,3951,962],{},[23,3953,3954,969],{},[50,3955,968],{},[23,3957,3958,975],{},[50,3959,974],{},[23,3961,978],{},[23,3963,981],{},[11,3965,3966,3970,3972],{"id":984,"level":454},[16,3967,3968,670],{"id":984},[50,3969,962],{},[188,3971],{"language":190,"src":991},[20,3973,3974,3978],{},[23,3975,3976,998],{},[50,3977,962],{},[23,3979,1001],{},[11,3981,3982,3986,3988],{"id":1004,"level":454},[16,3983,3984,670],{"id":1007},[50,3985,968],{},[188,3987],{"language":190,"src":1012},[20,3989,3990,3994,3998],{},[23,3991,3992,1019],{},[50,3993,968],{},[23,3995,1022,3996],{},[50,3997,1025],{},[23,3999,1028],{},[11,4001,4002,4006,4008],{"id":1031,"level":454},[16,4003,4004,670],{"id":1034},[50,4005,974],{},[188,4007],{"language":190,"src":1039},[20,4009,4010,4014,4016,4018,4020],{},[23,4011,4012,1046],{},[50,4013,974],{},[23,4015,1049],{},[23,4017,1052],{},[23,4019,1055],{},[23,4021,1058],{},[11,4023,4024,4026],{"id":1061,"level":14},[16,4025,1064],{"id":1061},[20,4027,4028,4032,4036,4042,4046,4052,4058,4064],{},[23,4029,1069,4030,1072],{},[50,4031,521],{},[23,4033,1075,4034,1072],{},[50,4035,521],{},[23,4037,1080,4038,1083,4040,1086],{},[50,4039,543],{},[50,4041,566],{},[23,4043,1089,4044,1092],{},[50,4045,375],{},[23,4047,1095,4048,1098,4050,1086],{},[50,4049,126],{},[50,4051,108],{},[23,4053,1103,4054,491,4056,1086],{},[50,4055,161],{},[50,4057,155],{},[23,4059,1110,4060,491,4062,1086],{},[50,4061,566],{},[50,4063,765],{},[23,4065,1117],{},[11,4067,4068,4070],{"id":1120,"level":14},[16,4069,1124],{"id":1123},[928,4071,4072,4076,4080,4084,4088,4094,4102],{},[23,4073,1129,4074],{},[50,4075,80],{},[23,4077,1134,4078],{},[50,4079,1137],{},[23,4081,1140,4082],{},[50,4083,1143],{},[23,4085,1146,4086],{},[50,4087,1149],{},[23,4089,1152,4090,1155,4092,1159],{},[50,4091,58],{},[50,4093,1158],{},[23,4095,1162,4096,1165,4098,1155,4100],{},[50,4097,1158],{},[50,4099,1158],{},[50,4101,1170],{},[23,4103,1173,4104,1177,4106],{},[50,4105,1176],{},[50,4107,1180],{},[11,4109,4110,4112],{"id":1183,"level":14},[16,4111,1186],{"id":1183},[20,4113,4114,4116,4118,4122,4124,4126],{},[23,4115,1191],{},[23,4117,1194],{},[23,4119,4120,1199],{},[50,4121,126],{},[23,4123,1202],{},[23,4125,1205],{},[23,4127,1208],{},[11,4129,4130,4132],{"id":1211,"level":14},[16,4131,1215],{"id":1214},[89,4133,4134,4154],{"gap":91,"left-width":92,"right-width":92},[94,4135,4136,4138,4142,4146,4150],{"v-slot:left":96},[98,4137,1222],{"id":1211},[181,4139,4140,1229],{},[1226,4141,1228],{},[181,4143,4144,1235],{},[1226,4145,1234],{},[181,4147,4148,1241],{},[1226,4149,1240],{},[181,4151,4152,1247],{},[1226,4153,1246],{},[94,4155,4156,4158],{"v-slot:right":96},[98,4157,1253],{"id":1252},[20,4159,4160,4165,4170,4175,4180,4185],{},[23,4161,4162],{},[1259,4163,1264],{"href":1261,"rel":4164},[1263],[23,4166,4167],{},[1259,4168,1271],{"href":1269,"rel":4169},[1263],[23,4171,4172],{},[1259,4173,1278],{"href":1276,"rel":4174},[1263],[23,4176,4177],{},[1259,4178,1285],{"href":1283,"rel":4179},[1263],[23,4181,4182],{},[1259,4183,1292],{"href":1290,"rel":4184},[1263],[23,4186,4187],{},[1259,4188,1299],{"href":1297,"rel":4189},[1263],{"title":96,"searchDepth":1301,"depth":1301,"links":4191},[4192,4193,4194,4195,4196,4197,4198,4199,4200,4201,4202,4203,4204,4205,4206,4207,4208,4209,4210,4211,4212,4213,4214,4215,4216,4217,4218,4219],{"id":13,"depth":1301,"text":18},{"id":40,"depth":1301,"text":43},{"id":84,"depth":1301,"text":87},{"id":168,"depth":1301,"text":1307},{"id":204,"depth":1301,"text":1309},{"id":256,"depth":1301,"text":1311},{"id":303,"depth":1301,"text":1313},{"id":348,"depth":1301,"text":349},{"id":390,"depth":1301,"text":393},{"id":453,"depth":1301,"text":457},{"id":503,"depth":1301,"text":506},{"id":572,"depth":1301,"text":575},{"id":610,"depth":1301,"text":613},{"id":665,"depth":1301,"text":1321},{"id":714,"depth":1301,"text":1323},{"id":758,"depth":1301,"text":1325},{"id":802,"depth":1301,"text":1327},{"id":840,"depth":1301,"text":843},{"id":882,"depth":1301,"text":883},{"id":920,"depth":1301,"text":923},{"id":952,"depth":1301,"text":955},{"id":984,"depth":1301,"text":1333},{"id":1007,"depth":1301,"text":1335},{"id":1034,"depth":1301,"text":1337},{"id":1061,"depth":1301,"text":1064},{"id":1123,"depth":1301,"text":1124},{"id":1183,"depth":1301,"text":1186},{"id":1214,"depth":1301,"text":1215},{},{"title":5,"description":1344},[190,1359,1360,1361],[],1780581681846]