Control structures and arrays: if/else/elseif/switch; for, while, do-while, foreach; arrays (indexed, associative, multidimensional); array operations (sort(), asort(), ksort(), array_merge())

PHP નું control flow જાણીતું છે, પણ એનાં arrays જ ખરાં નાયક છે: indexed, associative (ચાવીથી કિંમત) અને multidimensional, જેમને foreach થી ફરી વળાય છે અને array functions ના સમૃદ્ધ પરિવારથી નવો ઘાટ અપાય છે.

12 min read · 10 cards · 2 checks

Read in: English · हिन्दी · ગુજરાતી


Theory

Registration ની list એ array છે

Event portal નો મુખ્ય data એ એક યાદી છે: Garba Night માટે નોંધાયેલા બધા લોકો. PHP માં એ યાદી એટલે array, અને PHP નાં arrays અસાધારણ રીતે શક્તિશાળી છે: એ સાદી ક્રમાંકિત યાદીઓ હોઈ શકે, ચાવીથી કિંમત સુધીના નકશા હોઈ શકે, કે records ના અંદરોઅંદર ગોઠવાયેલા કોઠા પણ હોઈ શકે.

Control flow (if, switch, loops) તો તમે 5 ભાષાઓમાંથી પહેલેથી જાણો છો; PHP વાળાં એમનાં રૂપોમાં ભાગ્યે જ કોઈ આશ્ચર્ય છે. એટલે આ પાઠ પોતાની શક્તિ ત્યાં ખર્ચે છે જ્યાં PHP ખરેખર જુદું પડે છે અને પરીક્ષામાં પણ ભારે વજન ધરાવે છે: arrays, એમને ફરી વળતો loop (foreach), અને એમને sort કરતાં તથા નવો ઘાટ આપતાં functions નો પરિવાર.

Theory

Control flow, ટૂંકમાં

PHP નાં control structures એ જાણીતો સમૂહ છે:

  • નિર્ણયો માટે if / elseif / else અને switch (દરેક case સાથે break)
  • ગણતરીવાળા અને શરતવાળા આંટા માટે for, while, do-while
  • Arrays ને ફરી વળવા માટે foreach: આ એક પર ખરેખર ધ્યાન આપવા જેવું છે

foreach 2 રૂપે આવે છે: દરેક કિંમત સુધી પહોંચવા foreach ($arr as $value), અને દરેક ચાવી તથા એની કિંમત બંને સુધી પહોંચવા foreach ($arr as $key => $value). નીચે આવતાં associative arrays માટે બીજું રૂપ અનિવાર્ય છે.

Theory

Array ના ત્રણ પ્રકાર

PHP નાં arrays 3 ઘાટમાં આવે છે:

  • Indexed: 0 થી શરૂ થતી સંખ્યાત્મક ચાવીઓ. $names = ["Riya", "Aman"]; એટલે $names[0] એ "Riya" છે
  • Associative: કિંમતો સાથે જોડાયેલી STRING ચાવીઓ. $event = ["seats" => 350, "venue" => "Ground"]; એટલે $event["seats"] એ 350 છે
  • Multidimensional: arrays ની અંદર arrays, જે records ના કોઠા માટે ઉત્તમ છે: જેમ કે registration ની list જ્યાં દરેક નોંધ પોતે એક વ્યક્તિની વિગતોનું associative array હોય

Associative array એ PHP ની ઓળખસમાન તાકાત છે: સાફસૂથરી key => value syntax સાથેનો અંદરથી જ મળતો નકશો (dictionary જેવો).

Practical

Arrays અને foreach (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 નો પરિવાર (પરીક્ષાનો માનીતો)

Functionશેના પરથી sort કરે છેચાવીનું જોડાણ સાચવે છે?
sort()કિંમતો, ચડતા ક્રમમાંના: 0,1,2 એમ ફરી ક્રમાંક આપે છે (ચાવીઓ જાય છે)
asort()કિંમતો, ચડતા ક્રમમાંહા: key => value ની જોડી સાચવે છે
ksort()ચાવીઓ, ચડતા ક્રમમાંહા: ચાવી પ્રમાણે ફરી ગોઠવે છે
rsort() / arsort() / krsort()ઉપરના પ્રમાણે, ઊતરતા ક્રમમાંએમનાં ચડતા ક્રમવાળાં જોડિયાં જેવું જ

Quiz

તમારી પાસે associative array છે: $scores = ["Riya"=>80, "Aman"=>95]. તમારે score પ્રમાણે sort કરવું છે, પણ દરેક નામ એના score સાથે જોડાયેલું જ રહેવું જોઈએ. કયું function?

  1. sort(): એ કિંમતો sort કરે છે
  2. asort(): એ કિંમત પ્રમાણે sort કરે છે અને key => value નું જોડાણ સાચવે છે
  3. ksort(): એ ચાવી પ્રમાણે sort કરે છે
  4. array_merge(): એ arrays ને ભેગાં કરે છે
Show the answer

asort(): એ કિંમત પ્રમાણે sort કરે છે અને key => value નું જોડાણ સાચવે છે

asort() કિંમત (scores) પ્રમાણે sort કરે છે પણ key-value ની જોડી સાચવે છે, એટલે Riya 80 સાથે અને Aman 95 સાથે જોડાયેલાં જ રહે છે: બરાબર એ જ જે તમને જોઈએ છે. sort() પણ કિંમતો ક્રમમાં ગોઠવત, પણ એ array ને 0,1,2 એમ ફરી ક્રમાંક આપીને નામની ચાવીઓ નાશ કરી નાખત: કોણે કેટલા ગુણ મેળવ્યા એ ખબર જ ન રહેત. ksort() ચાવીઓ પ્રમાણે (નામ મૂળાક્ષરના ક્રમમાં) sort કરે છે, scores પ્રમાણે નહીં. array_merge() sort કરતું જ નથી. sort સામે asort નો આ ભેદ (એ ચાવીઓ સાચવે છે કે નહીં) PHP નાં arrays વિશે સૌથી વધુ પુછાતો સવાલ છે: sort ચાવીઓ ગુમાવે છે, asort એમને સાચવે છે.

Think first

sort() એ નકશો નાશ કરી નાખ્યો

એક વિદ્યાર્થી score પ્રમાણે ક્રમ ગોઠવવા $scores નામના associative array પર sort() ચલાવે છે, પછી foreach($scores as $name => $score) થી આંટા મારે છે. નામની જગ્યાએ Riya અને Aman ને બદલે 0 અને 1 નીકળે છે. શું થયું તે સમજાવો, પછી tap કરો.

Show the answer

sort() કિંમતોને ચડતા ક્રમમાં ગોઠવે છે, પણ સાથે સાથે array ને 0, 1, 2... એવી તાજી સંખ્યાત્મક ચાવીઓ આપીને ફરી ક્રમાંકિત કરે છે, અને મૂળ string ચાવીઓ ફેંકી દે છે. એટલે sort() પછી array બને છે [0=>80, 1=>95]: નામ ગયાં, એમની જગ્યાએ સંખ્યાઓ આવી, અને હવે foreach ને ચાવીઓ તરીકે 0 અને 1 દેખાય છે. ઉપાય છે asort(), જે કિંમત પ્રમાણે sort કરે છે અને નામની ચાવીઓ જોડાયેલી રાખે છે. શીખ: associative arrays પર sort નું function એ પ્રમાણે પસંદ કરો કે તમારે ચાવીઓ સાચવવી છે કે નહીં: sort અને rsort એમને ફેંકી દે છે, જ્યારે asort, arsort, ksort અને krsort એમને સાચવે છે. જ્યાં ચાવીઓ અગત્યની ન હોય એવી સાદી indexed યાદીઓ પર જ sort() તરફ હાથ લંબાવો.

Watch out

Array ના ફાંદા

Associative arrays પર sort(): એ ચાવીઓ નાશ કરે છે; એમને સાચવવા asort() વાપરો.

key => value વગરનું foreach: associative array પર ચાવીઓ જોવા માટે as $key => $value જોઈએ.

count() સાથે એકનો ફરક: count() ઘટકોની સંખ્યા આપે છે; indexed arrays માટે છેલ્લો ક્રમાંક count() - 1 હોય છે.

અસ્તિત્વ ન ધરાવતી ચાવીઓ: $arr["missing"] વાપરવાથી ચેતવણી આવે છે અને null મળે છે; પહેલાં isset() થી તપાસો.

foreach ચાલુ હોય ત્યારે array બદલવું: એથી ઝીણી ભૂલો થઈ શકે છે; એને બદલે નવું array બનાવો.

Theory

Data અને logic પતી ગયાં; હવે ખરો input

Portal હવે પોતાની registration ની list ને multidimensional array તરીકે સંઘરી શકે છે, એને foreach થી ફરી વળી શકે છે અને જોઈએ એ રીતે sort કરી શકે છે. પણ data ક્યાંકથી તો આવવો જોઈએ: એટલે કે FORM ભરતા વપરાશકાર પાસેથી. પછીનો પાઠ $_GET અને $_POST થી HTML forms ને PHP સાથે જોડે છે, વારંવાર વપરાતા logic ને FUNCTIONS માં વીંટે છે, અને દરેક ખરા login form ને જોઈતી input ની ચકાસણી તથા સફાઈ ઉમેરે છે. Unit 1 ત્યાં પૂરું થાય છે જ્યાં portal જીવતું થાય છે: ખરું registration સંભાળતાં.

Summary

Key takeaways

  • Control flow જાણીતું છે: if/elseif/else, switch (break સાથે), for, while, do-while, અને arrays માટે foreach.
  • foreach arrays ને ફરી વળે છે: કિંમતો માટે as $value, અને key-value ની જોડી માટે as $key => $value.
  • Array ના ત્રણ પ્રકાર: indexed (0 થી શરૂ થતી સંખ્યાત્મક ચાવીઓ), associative (string ચાવી અને કિંમત), multidimensional (arrays ની અંદર arrays).
  • Associative arrays એ PHP ના અંદરથી મળતા નકશા છે; multidimensional arrays records ના કોઠાનું ઢાંચું આપે છે (registration ની list).
  • Sorting: sort() કિંમતો ક્રમમાં ગોઠવે છે પણ ફરી ક્રમાંક આપે છે (ચાવીઓ ગુમાવે છે); asort() key-value ની જોડી સાચવે છે; ksort() ચાવી પ્રમાણે sort કરે છે.
  • તમારે ચાવીઓ સાચવવી છે કે નહીં એ પ્રમાણે sort નું function પસંદ કરો.
  • યાદ રાખવાની કડી: sort ચાવીઓ ગુમાવે છે, asort એમને સાચવે છે.

Study this properly

This page is the lesson to read. In Gri-Learn the same topic is a graded deck: the self-checks are scored and your weak topics are tracked. Free to start.

Start this topic

Already have an account? Sign in

More from Core PHP Programming

Gri-Learn · syllabus-mapped B.C.A. lessons in English, Hindi and Gujarati

Control structures and arrays: if/else/elseif/switch; for, while, do-while, foreach; arrays (indexed, associative, multidimensional); array operations (sort(), asort(), ksort(), array_merge()) · Web Framework and Services (Major-12) · Gri-Learn