Theory
Registration List एक Array है
Event portal का core data एक LIST है: Garba Night के लिए registered हर कोई। PHP में वह list एक array है, और PHP के arrays unusually powerful हैं: ये simple numbered lists हो सकते हैं, या keys से values के maps, या records की nested tables।
Control flow (if, switch, loops) आप 5 languages से पहले ही जानते हैं; PHP के versions में कम surprises हैं। तो यह lesson अपनी energy वहाँ खर्च करता है जहाँ PHP genuinely distinctive और exam-heavy है: arrays, वह loop जो इन्हें walk करता है (foreach), और वह family of functions जो इन्हें sort और reshape करते हैं।
Theory
Control Flow, Briefly
PHP के control structures familiar set हैं:
- decisions के लिए if / elseif / else और switch (हर case पर
breakके साथ) - counted और conditional loops के लिए for, while, do-while
- arrays walk करने के लिए foreach: वह जो real attention लायक है
foreach 2 forms में आता है: हर value visit करने के लिए foreach ($arr as $value), और हर key AND इसकी value visit करने के लिए foreach ($arr as $key => $value)। Associative arrays के लिए (नीचे), दूसरी form essential है।
Theory
तीन Kinds का Array
PHP arrays 3 shapes में आते हैं:
- Indexed: 0 से numeric keys।
$names = ["Riya", "Aman"];तो$names[0]"Riya" है - Associative: STRING keys values से mapping करते हैं।
$event = ["seats" => 350, "venue" => "Ground"];तो$event["seats"]350 है - Multidimensional: arrays के arrays, records की एक table के लिए perfect: एक registration list जहाँ हर entry खुद एक व्यक्ति की details का associative array है
Associative array PHP की signature strength है: clean key => value syntax के साथ एक built-in map (एक dictionary की तरह)।
Practical
Arrays and foreach (predict the output)
<?php
// Associative array: keys map to values
$event = ["venue" => "Ground", "seats" => 350, "fee" => 50];
foreach ($event as $key => $value) {
echo "$key = $value <br>";
}
// venue = Ground
// seats = 350
// fee = 50
// Multidimensional: a registration list
$regs = [
["name" => "Riya", "paid" => true],
["name" => "Aman", "paid" => false],
];
echo $regs[0]["name"]; // Riya
echo count($regs); // 2
?>
At a glance
Sorting Family (Exam Favourite)
| Function | Sort करता है By | Key Association रखता है? |
|---|---|---|
| sort() | Values, ascending | नहीं: 0,1,2 re-indexes करता है (keys खो जाती हैं) |
| asort() | Values, ascending | हाँ: key => value pairs रखता है |
| ksort() | Keys, ascending | हाँ: key से reorder करता है |
| rsort() / arsort() / krsort() | Above जैसा, descending | इनके ascending twins जैसा ही |
Quiz
आपके पास एक associative array $scores = ["Riya"=>80, "Aman"=>95] है। आप score से sort करना चाहते हैं पर हर name को इसके score से attached रखना चाहते हैं। कौन सा function?
- sort(): यह values sort करता है
- asort(): यह key => value association रखते हुए value से sort करता है
- ksort(): यह key से sort करता है
- array_merge(): यह arrays combine करता है
Show the answer
asort(): यह key => value association रखते हुए value से sort करता है
asort() VALUE (scores) से sort करता है पर key-value pairs PRESERVE करता है, तो Riya 80 से और Aman 95 से attached रहते हैं: exactly वह जो आपको चाहिए। sort() भी values order करता, पर array को 0,1,2 में RE-INDEX करता, name keys DESTROY करते हुए: आप खो देते who scored what। ksort() KEYS (names alphabetically) से sort करता है, scores से नहीं। array_merge() बिल्कुल sort नहीं करता। यह sort-बनाम-asort distinction (क्या यह keys रखता है?) सबसे-ज़्यादा-पूछा गया PHP array question है: sort keys खोता है, asort इन्हें रखता है।
Think first
sort() ने Map तोड़ दिया
एक student score से order करने के लिए $scores associative array पर sort() चलाता है, फिर foreach($scores as $name => $score) से loop करता है। Names 0 और 1 की तरह आते हैं, Riya और Aman नहीं। Explain कीजिए क्या हुआ, फिर tap कीजिए।
Show the answer
sort() VALUES को ascending sort करता है पर array को fresh numeric keys 0, 1, 2... से भी RE-INDEX करता है, original string keys को THROWING AWAY करते हुए। तो sort() के बाद, array [0=>80, 1=>95] है: names गए, numbers से replaced, और foreach अब keys 0 और 1 देखता है। Fix asort() है, जो name keys attached RAKHTE हुए value से sort करता है। Lesson: associative arrays पर, sort function चुनिए इस पर कि क्या आपको keys preserve करनी हैं: sort/rsort इन्हें discard करते हैं, asort/arsort/ksort/krsort इन्हें रखते हैं। sort() सिर्फ़ plain indexed lists पर reach कीजिए जहाँ keys matter नहीं करतीं।
Watch out
Array Traps
Associative Arrays पर sort(): यह keys destroy करता है; इन्हें रखने के लिए asort() इस्तेमाल कीजिए।
Key => Value के बिना foreach: एक associative array पर keys देखने के लिए आपको as $key => $value चाहिए।
count() पर Off-by-One: count() elements की number देता है; indexed arrays के लिए last index count() - 1 है।
Undefined Keys: $arr["missing"] access करना warn करता है और null देता है; पहले isset() से check कीजिए।
Foreach करते हुए एक Array Modify करना: subtle bugs cause कर सकता है; इसकी बजाय एक नया array build कीजिए।
Theory
Data और Logic हो गए, अब Real Input
अब portal अपनी registration list को एक multidimensional array की तरह store कर सकता है, इसे foreach से walk कर सकता है, और इसे किसी भी ज़रूरी तरीके से sort कर सकता है। पर data को कहीं से आना पड़ता है: एक user एक FORM भरते हुए। अगला lesson HTML forms को $_GET और $_POST से PHP के साथ जोड़ता है, repeated logic को FUNCTIONS में wrap करता है, और वह input validation और sanitization add करता है जो हर real login form को चाहिए। यहीं Unit 1 ख़त्म होता है जहाँ portal जीवंत होता है: एक real registration handle करते हुए।
Summary
Key takeaways
- Control flow familiar है: if/elseif/else, switch (break के साथ), for, while, do-while, और arrays के लिए foreach।
- foreach arrays को walk करता है: values के लिए as $value, key-value pairs के लिए as $key => $value।
- तीन array kinds: indexed (0 से numeric keys), associative (string key => value), multidimensional (arrays के arrays)।
- Associative arrays PHP के built-in maps हैं; multidimensional arrays records की tables model करते हैं (registration list)।
- Sorting: sort() values order करता है पर RE-INDEXES करता है (keys खोता है); asort() key-value pairs रखता है; ksort() key से sort करता है।
- Sort function चुनिए इस पर कि क्या आपको keys preserve करनी हैं।
- Memory hook: sort keys खोता है, asort इन्हें रखता है।