{"id":230777,"date":"2022-12-18T13:00:00","date_gmt":"2022-12-18T10:00:00","guid":{"rendered":"https:\/\/wordpress.mediadoma.com\/?p=230777"},"modified":"2022-12-07T09:57:39","modified_gmt":"2022-12-07T06:57:39","slug":"loopide-kirjutamine-php-s-kaks-voimalust-sama-asi","status":"publish","type":"post","link":"https:\/\/wordpress.mediadoma.com\/et\/loopide-kirjutamine-php-s-kaks-voimalust-sama-asi\/","title":{"rendered":"Loopide kirjutamine PHP-s: kaks v\u00f5imalust; Sama asi"},"content":{"rendered":"\n<p>Kui t\u00f6\u00f6tate PHP-s kogumiga, eriti PHP-massiividega, on kaks v\u00f5imalust, kuidas teavet peamiselt manipuleeritakse:<\/p>\n<ol>\n<li>l\u00e4bi <code>for<\/code>\u00a0silmuste,<\/li>\n<li>PHP pakutavate erinevate <code>array<\/code>\u00a0funktsioonide kaudu.<\/li>\n<\/ol>\n<p>Arvan, et <code>array<\/code>\u00a0funktsioonid pakuvad paremat loetavust, kuid need on osutunud aeglasemaks (eriti suuremate andmete puhul \u2013 v\u00e4iksemate andmete puhul on see loomulikult t\u00fchine).<\/p>\n<p>Ma t\u00f6\u00f6tan sageli <code>for<\/code>ts\u00fcklite ja seotud funktsioonidega, et saavutada sama asi, kuid arvasin, et tasub vaadata n\u00e4idet <a href=\"https:\/\/tommcfarlin.com\/tags-without-links-1-4-0\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">eelmisest postitusest<\/a> ja sellest, kuidas ma kasutasin funktsioone ts\u00fckliga <code>array<\/code>\u00a0samade asjade saavutamiseks .<code>for<\/code><\/p>\n<p>L\u00f5ppkokkuv\u00f5ttes on see v\u00f5rdluspostitus, kuid minu arvates on hea n\u00e4ha, kuidas sama koodi saab erineval viisil kirjutada.<\/p>\n<h2>Loopide kirjutamine PHP-s<\/h2>\n<p>Alguses ma ei v\u00e4ida, kumb on parem. See on lihtsalt selleks, et n\u00e4idata, kuidas PHP-s ts\u00fcklite kirjutamist saab saavutada mitmel viisil.<\/p>\n<p>See, kuidas soovite seda rakendada, on teie otsustada.<\/p>\n<p>Selle n\u00e4ite eesm\u00e4rk on n\u00e4idata:<\/p>\n<ul>\n<li>kuidas saada antud postituse silte,<\/li>\n<li>loe nende nimesid on torudega eraldatud massiiv,<\/li>\n<li>tagastab toruga eraldatud sildinimed stringivormingus.<\/li>\n<\/ul>\n<p>Ja siin on kaks v\u00f5imalust seda teha.<\/p>\n<h3>Standardse silmuse kasutamine<\/h3>\n<p>Standardse <code>for<\/code>\u00a0ts\u00fckli kasutamine v\u00f5ib v\u00e4lja n\u00e4ha umbes selline:<\/p>\n<pre><code>&lt;?php\n\n\/\/ Setup the array to store the tag names.\n$tagNames = [];\n\n\/\/ Iterate through all of the tags.\n$tags = get_the_tags();\nfor ($i = 0; $i &lt; count($tags); $i++) {\n  $currentTag = $tags[$i];\n\n  \/\/ Only add names that have not been added.\n  if (!in_array($currentTag-&gt;name, $tagNames)) {\n      $tagNames[] = $currentTag-&gt;name;\n  }\n}\n\n\/\/ Break the names of the the tags into a '|' delimited string.\n$tagNameString = implode('|', $tagNames);\n\n\/\/ Clean up the string so any trailing pipes are removed.\n$tagNameString = rtrim($tagNameString, '|');\n<\/code><\/pre>\n<p>Pange t\u00e4hele, et ma:<\/p>\n<ol>\n<li>initsialiseerida string,<\/li>\n<li>lugege silte<\/li>\n<li>korrake neid ja lisage need ainult siis, kui neid veel pole,<\/li>\n<li>eraldage massiiv toru abil,<\/li>\n<li>eemaldage k\u00f5ik j\u00e4reltorud<\/li>\n<\/ol>\n<p>Siis on mul n\u00f6\u00f6r, mille saan tagastada.<\/p>\n<h3>Massiivifunktsioonide kasutamine<\/h3>\n<p>Selles n\u00e4ites teen sama asja, kuid kood on veidi kompaktsem:<\/p>\n<pre><code>&lt;?php\n\n\/\/ Seperate each indidivudal entry by a '|'\nimplode(\n  '|',\n  \/\/ Remove any duplicates in the array.\n  array_filter(\n    \/* iterate through the list of tags and add the names to an \n     * array that's returned to filter.\n     *\/\n    array_map(function ($tag) {\n      return $tag-&gt;name;\n    }, get_the_tags())) );<\/code><\/pre>\n<p>Kasulik on lugeda koodi sisemisest funktsioonist v\u00e4limiseni. Sellega toimub j\u00e4rgmine:<\/p>\n<ol>\n<li>V\u00f5tan sildid ja kordan neid k\u00f5iki, kasutades anon\u00fc\u00fcmset funktsiooni, mis on edastatud <code>array_map<\/code>,<\/li>\n<li>Seej\u00e4rel kasutan tagastatud massiivi ja edastan selle <code>array_filter<\/code>\u00a0nii, et duplikaadid eemaldatakse,<\/li>\n<li>Seej\u00e4rel teisendan massiivi toruga eraldatud stringiks.<\/li>\n<\/ol>\n<p>Sarnaselt \u00fclaltoodule on mul string, mille saan tagastada.<\/p>\n<h3>See on see?<\/h3>\n<p>Jah \u2013 ja k\u00f5ik. Ma ei \u00fctle, et teise funktsiooni loetavus on parem, kuid ma \u00fctlen, et see n\u00f5uab v\u00e4hem samme.<\/p>\n<p>Pidage meeles ka seda, et suuremad andmekogumid ei pruugi sama h\u00e4sti toimida.<\/p>\n<p>Sellest hoolimata on sisseehitatud massiivifunktsioonide kasutamine t\u00f5esti tore, kuna see pakub PHP-le omaseid sisseehitatud funktsioone (kusjuures <code>for<\/code>\u00a0ts\u00fcklid on k\u00f5igis keeltes tavalisemad), mis v\u00f5ib meie aega s\u00e4\u00e4sta (nt dubleerivate andmete filtreerimine).<\/p>\n<h2>Mingeid viiteid?<\/h2>\n<p>Tegelikult jah. Lisaks <a href=\"https:\/\/secure.php.net\/manual\/en\/ref.array.php\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">PHP k\u00e4siraamatule<\/a> on <a href=\"https:\/\/carlalexander.ca\/php-array-functions-instead-loops\/\" target=\"_blank\" rel=\"noopener nofollow\" class=\"external external_icon\">Carl Alexanderil<\/a> sellel teemal vaieldamatult k\u00f5ige p\u00f5hjalikum artikkel.<\/p>\n<p><a href=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161046-61e71a7e3ffca.png\" data-rel=\"lightbox\"><img decoding=\"async\" class=\"SDStudio-light-box-enable SDStudio-editor-tools-md-imp\" src=\"https:\/\/wordpress.mediadoma.com\/wp-content\/uploads\/2022\/01\/post-161046-61e71a7e3ffca.png\" alt=\"Loopide kirjutamine PHP-s: kaks v\u00f5imalust; Sama asi\" ><\/a><\/p>\n<p>Selle tervikuna lugemiseks tasub kulutada aega, eriti kui see konkreetne postitus oli teile huvitav.<\/p>\n<p><div id=\"PostUnique_PostSource\" style=\"padding-top: 50px\">:  <a target=\"_blank\" rel=\"noopener nofollow\" href=\"\/\/tommcfarlin.com\" class=\"external external_icon\">tommcfarlin.com<\/a><\/div><\/p>\n","protected":false},"excerpt":{"rendered":"<p>See on v\u00f5rdluspostitus, kuid minu arvates on hea n\u00e4ha, kuidas sama koodi saab erineval viisil kirjutada.<\/p>\n","protected":false},"author":1,"featured_media":236064,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":"","_wp_rev_ctl_limit":""},"categories":[718,833,802],"tags":[1165],"class_list":["post-230777","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-arendaja","category-juhend-algajatele","category-php-4","tag-affiai-et"],"_links":{"self":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230777","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/comments?post=230777"}],"version-history":[{"count":0,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/posts\/230777\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media\/236064"}],"wp:attachment":[{"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/media?parent=230777"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/categories?post=230777"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/wordpress.mediadoma.com\/et\/wp-json\/wp\/v2\/tags?post=230777"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}