{"id":124,"date":"2020-11-12T15:34:58","date_gmt":"2020-11-12T15:34:58","guid":{"rendered":"http:\/\/jplatz.com.br\/syntax\/?p=124"},"modified":"2020-12-10T23:06:54","modified_gmt":"2020-12-10T23:06:54","slug":"php-array-destructuring-retornando-array-associativa-para-variaveis-escalares","status":"publish","type":"post","link":"https:\/\/jplatz.com.br\/syntax\/2020\/11\/12\/php-array-destructuring-retornando-array-associativa-para-variaveis-escalares\/","title":{"rendered":"PHP Array Destructuring&#8230; retornando array associativa para vari\u00e1veis escalares"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>function func_return_array_assoc() {\n  return &#91; \n    'index1' => 'content1',\n    'index2' => true,\n    'index3' => 1001,\n    'index4' => 0.115,\n    'index5' => null,\n    'index6' => array(),\n  ]; \n}\n\n&#91;\n  'index2' => $my_bool_var,\n  'index3' => $my_int_var,\n  'index1' => $my_string_var,\n] = func_return_array_assoc();\n\necho $my_int_var; \/\/ 1001 \necho $my_bool_var; \/\/ true\necho $my_string_var; \/\/ content1<\/code><\/pre>\n\n\n\n<p>Pois \u00e9 pessoal, recentemente esta t\u00e9cnica de programa\u00e7\u00e3o me chamou a aten\u00e7\u00e3o. <\/p>\n\n\n\n<p>No in\u00edcio eu n\u00e3o conseguia compreender muito bem como isto funcionava, ent\u00e3o tive de me aprofundar mais e acabei encontrando algo chamado Array Destructuring e o que apresento aqui neste artigo \u00e9 apenas uma parte do que realmente \u00e9 abrangido por este tema.<\/p>\n\n\n\n<p>Primeiro vamos entender como funciona este mecanismo. Quando voc\u00ea iguala dois arrays associativos o PHP vai fazer um match dos \u00edndices nas duas arrays. Os \u00edndices que fizerem match ser\u00e3o igualados e os demais ser\u00e3o desprezados. Observe tamb\u00e9m que o match n\u00e3o \u00e9 posicional, assim o array pode ser constru\u00eddo de forma diferente de cada lado.<\/p>\n\n\n\n<p>A grande sacada vem na utiliza\u00e7\u00e3o de vari\u00e1veis escalares na parte VALUE em um dos lados da array, desta forma durante o processo do match antes de tentar processar a igualdade o PHP primeiro atribui os valores nas vari\u00e1veis.<\/p>\n\n\n\n<p>N\u00e3o conseguiu visualizar onde poderia usar esta t\u00e9cnica de forma eficiente?<\/p>\n\n\n\n<p> Ent\u00e3o responda, como \u00e9 que uma fun\u00e7\u00e3o pode retornar mais de um valor? Certo, com um array ou um objeto. Mas e se construir um objeto est\u00e1 fora de cogita\u00e7\u00e3o (esfor\u00e7o desnecess\u00e1rio), onde recai a solu\u00e7\u00e3o? Certo novamente, ARRAY.<\/p>\n\n\n\n<p>E como voc\u00ea faz para receber o resultado de uma fun\u00e7\u00e3o que \u00e9 um ARRAY? Boa! Voc\u00ea atribui o resultado a uma $variavel_array. Ou ent\u00e3o, pode usar  o famoso list para receber posicionalmente, certo?<\/p>\n\n\n\n<p>Acho que agora deve ter ca\u00eddo a ficha&#8230; ao inv\u00e9s de usar o LIST do PHP para receber o array e atribuindo a vari\u00e1veis escalares de forma posicional, esta t\u00e9cnica permite fazer isto atrav\u00e9s do match dos \u00edndices atribuindo somente os valores desejados sem se preocupar com o posicionamento.<\/p>\n\n\n\n<p>Que loco! E pensar que j\u00e1 falei com muito dev que critica muito o ARRAY do PHP. Mais loco ainda&#8230;.<\/p>\n\n\n\n<p>Para quem quiser se aprofundar mais no tema recomendo dar uma olhada no blog Stitcher.io, segue o link:<\/p>\n\n\n\n<p><a href=\"https:\/\/stitcher.io\/blog\/array-destructuring-with-list-in-php\" target=\"_blank\" rel=\"noreferrer noopener\">https:\/\/stitcher.io\/blog\/array-destructuring-with-list-in-php<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pois \u00e9 pessoal, recentemente esta t\u00e9cnica de programa\u00e7\u00e3o me chamou a aten\u00e7\u00e3o. No in\u00edcio eu n\u00e3o conseguia compreender muito bem como isto funcionava, ent\u00e3o tive de me aprofundar mais e acabei encontrando algo chamado Array Destructuring e o que apresento aqui neste artigo \u00e9 apenas uma parte do que realmente \u00e9 abrangido por este tema. [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[26,2,3],"tags":[63],"class_list":["post-124","post","type-post","status-publish","format-standard","hentry","category-backend","category-coding","category-php","tag-array"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/124","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/comments?post=124"}],"version-history":[{"count":3,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/124\/revisions"}],"predecessor-version":[{"id":128,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/124\/revisions\/128"}],"wp:attachment":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/media?parent=124"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/categories?post=124"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/tags?post=124"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}