{"id":22372,"date":"2021-02-09T17:23:22","date_gmt":"2021-02-09T16:23:22","guid":{"rendered":"https:\/\/savinol.sg-host.com\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/"},"modified":"2021-02-09T17:23:22","modified_gmt":"2021-02-09T16:23:22","slug":"php-8-1-array_is_list-unpacking-degli-array-ed-enum","status":"publish","type":"post","link":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/","title":{"rendered":"PHP 8.1: array_is_list, unpacking degli array ed enum"},"content":{"rendered":"<p> <br \/>\n<\/p>\n<div>\n<p>In attesa di novembre, mese durante il quale potrebbe essere disponibile la versione definitiva di questa nuova versione, \u00e8 possibile anticipare alcune di quelle che dovrebbero essere le principali novit\u00e0 di <strong>PHP 8.1<\/strong>. L\u2019analisi che segue deve essere letta tenendo conto che non tutte le feature descritte hanno superato lo stato embrionale d\u2019implementazione, inoltre, anche se si tratta di un\u2019eventualit\u00e0 improbabile \u00e8 comunque sempre possibile che una o pi\u00f9 tra di esse non faccia parte del rilascio previsto in autunno.<span id=\"more-401771\"\/><\/p>\n<h2>La funzione array_is_list()<\/h2>\n<p><code>array_is_list()<\/code> \u00e8 una funzione nativa che restituisce un valore booleano ed \u00e8 stata pensata per verificare che le chiavi presenti in un array siano ordinate numericamente a partire dall\u2019indice 0, la sua utilit\u00e0 \u00e8 simile a quella di <code>json_encode()<\/code> che, restituendo la rappresentazione JSON di un valore, permette di stabilire se un array debba essere codificato come un array o come un oggetto. <\/p>\n<p>Un esempio di utilizzo di <code>array_is_list()<\/code> potrebbe essere il seguente:<\/p>\n<pre><code class=\"language-php\">\n# definizione di un array\n$xyz = [\"x\", \"y\", \"z\"];\narray_is_list($xyz); \/\/ restituisce true\n$n_xyz = [1 =&gt; \"x\", 2 =&gt; \"y\", 3 =&gt; \"z\"];\narray_is_list($n_xyz); \/\/ restituisce false\n$a_xyz = [\"x\" =&gt; \"x\", \"y\" =&gt; \"y\", \"z\" =&gt; \"z\"];\narray_is_list($a_xyz); \/\/ restituisce false\n<\/code><\/pre>\n<p>Nel codice proposto in precedenza la funzione viene richiamata 3 volte su array contenenti criteri di ordinamento delle chiavi differenti, soltanto nel primo caso verr\u00e0 restituito <code>TRUE<\/code> in quanto l\u2019array viene indicizzato automaticamente partendo da 0.<\/p>\n<h2>Unpacking degli array<\/h2>\n<p>In questo caso parliamo di una funzionalit\u00e0 gi\u00e0 presente in PHP 7.4 ma disponibile soltanto per i vettori con chiavi numeriche. Potendo utilizzare questa volta anche le chiavi in formato stringa ora sar\u00e0 possibile scrivere espressioni come la seguente:<\/p>\n<pre><code class=\"language-php\">\n$array_x = [\"x\" =&gt; 1];\n$array_y = [\"y\" =&gt; 2];\n$array_z = [\"x\" =&gt; 0, ...$array_x, ...$array_y];\nvar_dump($array_z); \/\/ restituisce [\"x\" =&gt; 1, \"y\" =&gt; 2]\n<\/code><\/pre>\n<p>Si noti l\u2019impiego dello <strong>splat operator<\/strong> (<code>...<\/code>) che viene impiegato appunto per combinare delle variabili in un array. Prima di PHP l\u2019unpacking con chiavi stringa non era stato introdotto in quanto gli sviluppatori non avevano trovato ancora un accordo riguardo alle modalit\u00e0 di merging degli array duplicati.<\/p>\n<h2>Enumeration<\/h2>\n<p>Ancora in fase di approvazione nel momento in cui viene scritto questo articolo, le <strong>Enumeration<\/strong> fanno riferimento ad un tipo di dato <code>enum<\/code> che consente di categorizzare dei valori in operazioni come per esempio le rappresentazioni di stato. Si pensi a tal proposito allo status di un post in un blog che pu\u00f2 essere in \u201cbozza\u201d cos\u00ec come \u201cpubblicato\u201d etc.<\/p>\n<pre><code class=\"language-php\">\nenum Stato {\n  case Bozza;\n  case Revisione;\n  case Attivo;\n}\n<\/code><\/pre>\n<p>La dichiarazione proposta genera un nuovo <code>enum<\/code> chiamato <code>Stato<\/code> che accetta soltanto 3 valori: <code>Stato::Bozza<\/code>, <code>Stato:Revisione<\/code> e <code>Stato::Attivo<\/code>. L\u2019assegnazione delle variabili pu\u00f2 essere quindi effettuata unicamente utilizzando uno di questi valori.<\/p>\n<p>Data una funzione come la seguente:<\/p>\n<pre><code class=\"language-php\">\nfunction assegna_stato(Stato $stato) { ... }\n<\/code><\/pre>\n<p>consente di effettuare un\u2019assegnazione come la seguente:<\/p>\n<pre><code class=\"language-php\">\n$x = Stato::Bozza;\n<\/code><\/pre>\n<p>e di eseguire delle chiamate valide come delle seguenti:<\/p>\n<pre><code class=\"language-php\">\nassegna_stato($x);\nassegna_stato(Stato::Revisione);\n<\/code><\/pre>\n<p>ma non di passare ad essa valori arbitrari, cio\u00e8 che non siano il tipo <code>Stato<\/code>:<\/p>\n<pre><code class=\"language-php\">\nassegna_stato('Attivo');\n<\/code><\/pre>\n<p>Il nuovo costrutto potrebbe non presentare alcun <code>case<\/code>, risultando corretto dal punto di vista sintattico ma sostanzialmente inutile. Nel contempo non esiste un numero massimo di <code>case<\/code> definibili.<\/p>\n<p><em>Fonte<\/em>: <a href=\"https:\/\/wiki.php.net\/rfc#php_81\" class=\"text-link text-link--special\" target=\"_blank\" rel=\"nofollow noopener noreferrer\"><span class=\"underline\">PHP Wiki<\/span><i class=\"ico-external\"\/><\/a><\/p>\n<\/div>\n<p><br \/>\n<br \/><a href=\"http:\/\/feedproxy.google.com\/~r\/htmlitedit\/~3\/OZz8yITf4nM\/\">Source link <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>In attesa di novembre, mese durante il quale potrebbe essere disponibile la versione definitiva di questa nuova versione, \u00e8 possibile anticipare alcune di quelle che dovrebbero essere le principali novit\u00e0 di PHP 8.1. L\u2019analisi che segue deve essere letta tenendo conto che non tutte le feature descritte hanno superato lo stato embrionale d\u2019implementazione, inoltre, anche&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_s2mail":""},"categories":[37],"tags":[],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v19.13 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>PHP 8.1: array_is_list, unpacking degli array ed enum - AGENZIA WEB Italia<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP 8.1: array_is_list, unpacking degli array ed enum - AGENZIA WEB Italia\" \/>\n<meta property=\"og:description\" content=\"In attesa di novembre, mese durante il quale potrebbe essere disponibile la versione definitiva di questa nuova versione, \u00e8 possibile anticipare alcune di quelle che dovrebbero essere le principali novit\u00e0 di PHP 8.1. L\u2019analisi che segue deve essere letta tenendo conto che non tutte le feature descritte hanno superato lo stato embrionale d\u2019implementazione, inoltre, anche...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/\" \/>\n<meta property=\"og:site_name\" content=\"AGENZIA WEB Italia\" \/>\n<meta property=\"article:published_time\" content=\"2021-02-09T16:23:22+00:00\" \/>\n<meta name=\"author\" content=\"admin\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"admin\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/\"},\"author\":{\"name\":\"admin\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42\"},\"headline\":\"PHP 8.1: array_is_list, unpacking degli array ed enum\",\"datePublished\":\"2021-02-09T16:23:22+00:00\",\"dateModified\":\"2021-02-09T16:23:22+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/\"},\"wordCount\":440,\"publisher\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\"},\"articleSection\":[\"News\"],\"inLanguage\":\"it-IT\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/\",\"name\":\"PHP 8.1: array_is_list, unpacking degli array ed enum - AGENZIA WEB Italia\",\"isPartOf\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#website\"},\"datePublished\":\"2021-02-09T16:23:22+00:00\",\"dateModified\":\"2021-02-09T16:23:22+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP 8.1: array_is_list, unpacking degli array ed enum\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#website\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\",\"name\":\"AGENZIA WEB Italia\",\"description\":\"Web design Web agency Italia\",\"publisher\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization\",\"name\":\"Multimedia Web\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png\",\"contentUrl\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png\",\"width\":200,\"height\":57,\"caption\":\"Multimedia Web\"},\"image\":{\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/\"}},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42\",\"name\":\"admin\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g\",\"caption\":\"admin\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PHP 8.1: array_is_list, unpacking degli array ed enum - AGENZIA WEB Italia","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/","og_locale":"it_IT","og_type":"article","og_title":"PHP 8.1: array_is_list, unpacking degli array ed enum - AGENZIA WEB Italia","og_description":"In attesa di novembre, mese durante il quale potrebbe essere disponibile la versione definitiva di questa nuova versione, \u00e8 possibile anticipare alcune di quelle che dovrebbero essere le principali novit\u00e0 di PHP 8.1. L\u2019analisi che segue deve essere letta tenendo conto che non tutte le feature descritte hanno superato lo stato embrionale d\u2019implementazione, inoltre, anche...","og_url":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/","og_site_name":"AGENZIA WEB Italia","article_published_time":"2021-02-09T16:23:22+00:00","author":"admin","twitter_card":"summary_large_image","twitter_misc":{"Scritto da":"admin","Tempo di lettura stimato":"3 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/#article","isPartOf":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/"},"author":{"name":"admin","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42"},"headline":"PHP 8.1: array_is_list, unpacking degli array ed enum","datePublished":"2021-02-09T16:23:22+00:00","dateModified":"2021-02-09T16:23:22+00:00","mainEntityOfPage":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/"},"wordCount":440,"publisher":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization"},"articleSection":["News"],"inLanguage":"it-IT"},{"@type":"WebPage","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/","name":"PHP 8.1: array_is_list, unpacking degli array ed enum - AGENZIA WEB Italia","isPartOf":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#website"},"datePublished":"2021-02-09T16:23:22+00:00","dateModified":"2021-02-09T16:23:22+00:00","breadcrumb":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/php-8-1-array_is_list-unpacking-degli-array-ed-enum\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.nycwebdesign.eu\/webdesign\/"},{"@type":"ListItem","position":2,"name":"PHP 8.1: array_is_list, unpacking degli array ed enum"}]},{"@type":"WebSite","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#website","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/","name":"AGENZIA WEB Italia","description":"Web design Web agency Italia","publisher":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.nycwebdesign.eu\/webdesign\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#organization","name":"Multimedia Web","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/","url":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png","contentUrl":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-content\/uploads\/2016\/05\/multimediaweb1.png","width":200,"height":57,"caption":"Multimedia Web"},"image":{"@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/logo\/image\/"}},{"@type":"Person","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/c0748e23499fac2fd73b79d1379fdf42","name":"admin","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/www.nycwebdesign.eu\/webdesign\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/991cd68bbfd6f946517378a63fc3a1f7?s=96&d=mm&r=g","caption":"admin"}}]}},"_links":{"self":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts\/22372"}],"collection":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/comments?post=22372"}],"version-history":[{"count":0,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/posts\/22372\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/media?parent=22372"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/categories?post=22372"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.nycwebdesign.eu\/webdesign\/wp-json\/wp\/v2\/tags?post=22372"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}