{"id":246,"date":"2021-05-30T00:51:46","date_gmt":"2021-05-30T00:51:46","guid":{"rendered":"http:\/\/jplatz.com.br\/syntax\/?p=246"},"modified":"2021-05-30T00:53:28","modified_gmt":"2021-05-30T00:53:28","slug":"php-como-verificar-se-um-array-e-100-sequencial","status":"publish","type":"post","link":"https:\/\/jplatz.com.br\/syntax\/2021\/05\/30\/php-como-verificar-se-um-array-e-100-sequencial\/","title":{"rendered":"PHP Como Verificar Se Um Array \u00e9 100% Sequencial"},"content":{"rendered":"\n<pre class=\"wp-block-code\"><code>function isArrayFullySequential(array $array): bool {\n    return count(array_filter($array, 'is_int', ARRAY_FILTER_USE_KEY)) === count($array);\n}<\/code><\/pre>\n\n\n\n<p>Ent\u00e3o&#8230; h\u00e1 algum tempo eu escrevi aqui no blog uma fun\u00e7\u00e3o para testar se um array era 100% associativo e no come\u00e7o do texto eu comentei que n\u00e3o sabia quando voc\u00ea precisaria usar uma fun\u00e7\u00e3o como essa. Pois \u00e9, mordendo a l\u00edngua eu acabei precisando agora testar o contr\u00e1rio, se um array era composto por \u00edndices 100% num\u00e9ricos.<\/p>\n\n\n\n<p>Ao integrar o sistema com uma API externa estruturada com XML tendo um elemento previsto com at\u00e9 1000 ocorr\u00eancias que seria carregado a partir de um array. Decidi por utilizar o \u00edndice do array como ID das ocorr\u00eancias no XML, assim implantei o requisito de ter este array indexado 100% com chaves num\u00e9ricas.<\/p>\n\n\n\n<p>Ainda estou pensando se vou manter esta abordagem ou n\u00e3o, talvez eu acabe flexibilizando a carga do array e controle apenas o total de ocorr\u00eancias.<\/p>\n\n\n\n<p>De qualquer forma segue abaixo a fun\u00e7\u00e3o que valida se os \u00edndices num\u00e9ricos do array est\u00e3o dentro dos lim\u00edtrofes esperados.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>hasItemsIndexOutOfBounds(array $array): bool {\n    $keys = array_keys($array);\n    return count($keys)\n        &amp;&amp; (min($keys) &lt; 1 || max($keys) > 1000);\n}<\/code><\/pre>\n\n\n\n<p>Ea \u00ed, curtiu? N\u00e3o sei quando voc\u00ea vai precisar usar usar uma destas fun\u00e7\u00f5es, mas fica a\u00ed o exemplo pra quando aparecer a necessidade.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ent\u00e3o&#8230; h\u00e1 algum tempo eu escrevi aqui no blog uma fun\u00e7\u00e3o para testar se um array era 100% associativo e no come\u00e7o do texto eu comentei que n\u00e3o sabia quando voc\u00ea precisaria usar uma fun\u00e7\u00e3o como essa. Pois \u00e9, mordendo a l\u00edngua eu acabei precisando agora testar o contr\u00e1rio, se um array era composto por [&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,85,97,126,128,127],"class_list":["post-246","post","type-post","status-publish","format-standard","hentry","category-backend","category-coding","category-php","tag-array","tag-array_filter","tag-array_keys","tag-count","tag-max","tag-min"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/246","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=246"}],"version-history":[{"count":2,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/246\/revisions"}],"predecessor-version":[{"id":248,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/posts\/246\/revisions\/248"}],"wp:attachment":[{"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/media?parent=246"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/categories?post=246"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/jplatz.com.br\/syntax\/wp-json\/wp\/v2\/tags?post=246"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}