CINXE.COM

GitHub - aimeos/map: PHP arrays and collections made easy

<!DOCTYPE html> <html lang="en" data-color-mode="auto" data-light-theme="light" data-dark-theme="dark" data-a11y-animated-images="system" data-a11y-link-underlines="true" > <head> <meta charset="utf-8"> <link rel="dns-prefetch" href="https://github.githubassets.com"> <link rel="dns-prefetch" href="https://avatars.githubusercontent.com"> <link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com"> <link rel="dns-prefetch" href="https://user-images.githubusercontent.com/"> <link rel="preconnect" href="https://github.githubassets.com" crossorigin> <link rel="preconnect" href="https://avatars.githubusercontent.com"> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/light-74231a1f3bbb.css" /><link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/dark-8a995f0bacd4.css" /><link data-color-theme="dark_dimmed" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_dimmed-f37fb7684b1f.css" /><link data-color-theme="dark_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_high_contrast-9ac301c3ebe5.css" /><link data-color-theme="dark_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_colorblind-cd826e8636dc.css" /><link data-color-theme="light_colorblind" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_colorblind-f91b0f603451.css" /><link data-color-theme="light_high_contrast" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_high_contrast-83beb16e0ecf.css" /><link data-color-theme="light_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/light_tritanopia-6e122dab64fc.css" /><link data-color-theme="dark_tritanopia" crossorigin="anonymous" media="all" rel="stylesheet" data-href="https://github.githubassets.com/assets/dark_tritanopia-18119e682df0.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-primitives-225433424a87.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-cba26849680f.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/global-b6cb3703b934.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/github-ea73c9cb5377.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/staff-7d691607ec07.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/devtools-ed3c56d5f6b2.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repository-4fce88777fa8.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/code-0210be90f4d3.css" /> <script type="application/json" id="client-env">{"locale":"en","featureFlags":["contentful_lp_flex_features_actions","contentful_lp_flex_features_codespaces","contentful_lp_flex_features_code_review","contentful_lp_flex_features_code_search","contentful_lp_flex_features_discussions","contentful_lp_flex_features_issues","copilot_immersive_issue_preview","copilot_new_references_ui","copilot_chat_repo_custom_instructions_preview","copilot_chat_show_model_picker_on_retry","copilot_no_floating_button","copilot_topics_as_references","copilot_read_shared_conversation","copilot_duplicate_thread","dotcom_chat_client_side_skills","experimentation_azure_variant_endpoint","failbot_handle_non_errors","geojson_azure_maps","ghost_pilot_confidence_truncation_25","ghost_pilot_confidence_truncation_40","github_models_gateway_parse_params","github_models_o3_mini_streaming","insert_before_patch","issues_advanced_search_has_filter","issues_react_remove_placeholders","issues_react_blur_item_picker_on_close","issues_advanced_search_nested_ownership_filters","issues_dashboard_no_redirects","marketing_pages_search_explore_provider","primer_react_css_modules_ga","react_data_router_pull_requests","remove_child_patch","sample_network_conn_type","swp_enterprise_contact_form","site_copilot_pro_plus","site_proxima_australia_update","viewscreen_sandbox","issues_react_create_milestone","issues_react_cache_fix_workaround","lifecycle_label_name_updates","copilot_task_oriented_assistive_prompts","issue_types_prevent_private_type_creation","refresh_image_video_src","codespaces_prebuild_region_target_update","copilot_code_review_sign_up_closed"]}</script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/wp-runtime-08d9011510c6.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover_js-9da652f58479.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_arianotify-polyfill_ariaNotify-polyfill_js-node_modules_github_mi-3abb8f-46b9f4874d95.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_failbot_failbot_ts-952d624642a1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/environment-f04cb2a9fc8c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_primer_behaviors_dist_esm_index_mjs-0dbb79f97f8f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_selector-observer_dist_index_esm_js-f690fd9ae3d5.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_relative-time-element_dist_index_js-62d275b7ddd9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_text-expander-element_dist_index_js-78748950cb0c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_auto-complete-element_dist_index_js-node_modules_github_catalyst_-8e9f78-a90ac05d2469.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-b5f1d7-a1760ffda83d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_markdown-toolbar-element_dist_index_js-ceef33f593fa.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_primer_view-co-c44a69-efa32db3a345.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/github-elements-394f8eb34f19.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/element-registry-0b7798be0424.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_braintree_browser-detection_dist_browser-detection_js-node_modules_githu-2906d7-2a07a295af40.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_lit-html_lit-html_js-be8cb88f481b.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_morphdom_dist_morphdom-e-7c534c-a4a1922eb55f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_turbo_dist_turbo_es2017-esm_js-a03ee12d659a.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-893f9f-b6294cf703b7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_color-convert_index_js-e3180fe3bcb3.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_quote-selection_dist_index_js-node_modules_github_session-resume_-947061-e7a6c4a19f98.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_updatable-content_updatable-content_ts-62f3e9c52ece.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_task-list_ts-app_assets_modules_github_sso_ts-ui_packages-900dde-768abe60b1f8.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_sticky-scroll-into-view_ts-3e000c5d31a9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_ajax-error_ts-app_assets_modules_github_behaviors_include-d0d0a6-e7f74ee74d91.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_behaviors_commenting_edit_ts-app_assets_modules_github_behaviors_ht-83c235-4bcbbbfbe1d4.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/behaviors-ba450e1a8c71.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_delegated-events_dist_index_js-node_modules_github_catalyst_lib_index_js-f6223d90c7ba.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-global-01e85cd1be94.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_virtualized-list_es_index_js-node_modules_github_template-parts_lib_index_js-94dc7a2157c1.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-70450e-4b93df70b903.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/app_assets_modules_github_ref-selector_ts-52913063a0b9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/codespaces-b419a25ee02f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_filter-input-element_dist_index_js-node_modules_github_remote-inp-3eebbd-0763620ad7bf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_decorators_js-node_modules_delegated-events_di-e161aa-9d41fb1b6c9e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_file-attachment-element_dist_index_js-node_modules_github_remote--3c9c82-b71ef90fbdc7.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/repositories-10217e4e5a53.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_github_catalyst_lib_inde-dbbea9-26cce2010167.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/code-menu-d6d3c94ee97e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/primer-react-350730ea92ff.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-core-72be69cef469.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/react-lib-1622bd1e542f.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/octicons-react-cf2f2ab8dab4.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_emotion_is-prop-valid_dist_emotion-is-prop-valid_esm_js-node_modules_emo-41b1a8-555bc0cf9cab.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_mini-throttle_dist_index_js-node_modules_stacktrace-parser_dist_s-e7dcdd-9a233856b02c.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_oddbird_popover-polyfill_dist_popover-fn_js-55fea94174bf.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/notifications-subscriptions-menu-53aa08c61b34.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.a490b7c9fa319e5cb069.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/notifications-subscriptions-menu.1bcff9205c241e99cff2.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.a490b7c9fa319e5cb069.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/notifications-subscriptions-menu.1bcff9205c241e99cff2.module.css" /> <title>GitHub - aimeos/map: PHP arrays and collections made easy</title> <meta name="route-pattern" content="/:user_id/:repository" data-turbo-transient> <meta name="route-controller" content="files" data-turbo-transient> <meta name="route-action" content="disambiguate" data-turbo-transient> <meta name="current-catalog-service-hash" content="f3abb0cc802f3d7b95fc8762b94bdcb13bf39634c40c357301c4aa1d67a256fb"> <meta name="request-id" content="C0C4:BDB2E:102AE:12F78:67F57CED" data-pjax-transient="true"/><meta name="html-safe-nonce" content="48c2db66546753481fb6e1b055e0378fcb83acb2986a5b2deadd6cd547e03929" data-pjax-transient="true"/><meta name="visitor-payload" content="eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJDMEM0OkJEQjJFOjEwMkFFOjEyRjc4OjY3RjU3Q0VEIiwidmlzaXRvcl9pZCI6IjY4NjAzMzUzODk0NDU4MTU1MzMiLCJyZWdpb25fZWRnZSI6InNvdXRoZWFzdGFzaWEiLCJyZWdpb25fcmVuZGVyIjoic291dGhlYXN0YXNpYSJ9" data-pjax-transient="true"/><meta name="visitor-hmac" content="a2175f1df0a4810fed1511f16e70e1c85fa24deba9ab9452a82005990ad7dbb0" data-pjax-transient="true"/> <meta name="hovercard-subject-tag" content="repository:222356890" data-turbo-transient> <meta name="github-keyboard-shortcuts" content="repository,copilot" data-turbo-transient="true" /> <meta name="selected-link" value="repo_source" data-turbo-transient> <link rel="assets" href="https://github.githubassets.com/"> <meta name="google-site-verification" content="Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I"> <meta name="octolytics-url" content="https://collector.github.com/github/collect" /> <meta name="analytics-location" content="/&lt;user-name&gt;/&lt;repo-name&gt;" data-turbo-transient="true" /> <meta name="user-login" content=""> <meta name="viewport" content="width=device-width"> <meta name="description" content="PHP arrays and collections made easy. Contribute to aimeos/map development by creating an account on GitHub."> <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="GitHub"> <link rel="fluid-icon" href="https://github.com/fluidicon.png" title="GitHub"> <meta property="fb:app_id" content="1401488693436528"> <meta name="apple-itunes-app" content="app-id=1477376905, app-argument=https://github.com/aimeos/map" /> <meta name="twitter:image" content="https://opengraph.githubassets.com/3795e65fb41d8cb16d9e56c395d0c8d1fffceb172e7250ebef6c3ad0b68c45db/aimeos/map" /><meta name="twitter:site" content="@github" /><meta name="twitter:card" content="summary_large_image" /><meta name="twitter:title" content="GitHub - aimeos/map: PHP arrays and collections made easy" /><meta name="twitter:description" content="PHP arrays and collections made easy. Contribute to aimeos/map development by creating an account on GitHub." /> <meta property="og:image" content="https://opengraph.githubassets.com/3795e65fb41d8cb16d9e56c395d0c8d1fffceb172e7250ebef6c3ad0b68c45db/aimeos/map" /><meta property="og:image:alt" content="PHP arrays and collections made easy. Contribute to aimeos/map development by creating an account on GitHub." /><meta property="og:image:width" content="1200" /><meta property="og:image:height" content="600" /><meta property="og:site_name" content="GitHub" /><meta property="og:type" content="object" /><meta property="og:title" content="GitHub - aimeos/map: PHP arrays and collections made easy" /><meta property="og:url" content="https://github.com/aimeos/map" /><meta property="og:description" content="PHP arrays and collections made easy. Contribute to aimeos/map development by creating an account on GitHub." /> <meta name="hostname" content="github.com"> <meta name="expected-hostname" content="github.com"> <meta http-equiv="x-pjax-version" content="42b44d119298c273b1f86ce8d3e0a92554b18212a43173b40a9562ec0055de52" data-turbo-track="reload"> <meta http-equiv="x-pjax-csp-version" content="e26f9f0ba624ee85cc7ac057d8faa8618a4f25a85eab052c33d018ac0f6b1a46" data-turbo-track="reload"> <meta http-equiv="x-pjax-css-version" content="205838381d6e5f35c535dbb12458f905bc43e0b186c86bf75aabbd0c0f36537c" data-turbo-track="reload"> <meta http-equiv="x-pjax-js-version" content="d6aba69c879ed98a7dea95b9a733bea91ebfb8692493003e41a0f73597813c31" data-turbo-track="reload"> <meta name="turbo-cache-control" content="no-preview" data-turbo-transient=""> <meta data-hydrostats="publish"> <meta name="go-import" content="github.com/aimeos/map git https://github.com/aimeos/map.git"> <meta name="octolytics-dimension-user_id" content="8647429" /><meta name="octolytics-dimension-user_login" content="aimeos" /><meta name="octolytics-dimension-repository_id" content="222356890" /><meta name="octolytics-dimension-repository_nwo" content="aimeos/map" /><meta name="octolytics-dimension-repository_public" content="true" /><meta name="octolytics-dimension-repository_is_fork" content="false" /><meta name="octolytics-dimension-repository_network_root_id" content="222356890" /><meta name="octolytics-dimension-repository_network_root_nwo" content="aimeos/map" /> <link rel="canonical" href="https://github.com/aimeos/map" data-turbo-transient> <meta name="turbo-body-classes" content="logged-out env-production page-responsive"> <meta name="browser-stats-url" content="https://api.github.com/_private/browser/stats"> <meta name="browser-errors-url" content="https://api.github.com/_private/browser/errors"> <meta name="release" content="25de1e5d579993e8ef2a015b26b08a9014c17243"> <link rel="mask-icon" href="https://github.githubassets.com/assets/pinned-octocat-093da3e6fa40.svg" color="#000000"> <link rel="alternate icon" class="js-site-favicon" type="image/png" href="https://github.githubassets.com/favicons/favicon.png"> <link rel="icon" class="js-site-favicon" type="image/svg+xml" href="https://github.githubassets.com/favicons/favicon.svg" data-base-href="https://github.githubassets.com/favicons/favicon"> <meta name="theme-color" content="#1e2327"> <meta name="color-scheme" content="light dark" /> <link rel="manifest" href="/manifest.json" crossOrigin="use-credentials"> </head> <body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div data-turbo-body class="logged-out env-production page-responsive" style="word-wrap: break-word;"> <div class="position-relative header-wrapper js-header-wrapper "> <a href="#start-of-content" data-skip-target-assigned="false" class="px-2 py-4 color-bg-accent-emphasis color-fg-on-emphasis show-on-focus js-skip-to-content">Skip to content</a> <span data-view-component="true" class="progress-pjax-loader Progress position-fixed width-full"> <span style="width: 0%;" data-view-component="true" class="Progress-item progress-pjax-loader-bar left-0 top-0 color-bg-accent-emphasis"></span> </span> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ui-commands_ui-commands_ts-2d52c8e72e64.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/keyboard-shortcuts-dialog-2560f573c7ca.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.a490b7c9fa319e5cb069.module.css" /> <react-partial partial-name="keyboard-shortcuts-dialog" data-ssr="false" data-attempted-ssr="false" > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"docsUrl":"https://docs.github.com/get-started/accessibility/keyboard-shortcuts"}}</script> <div data-target="react-partial.reactRoot"></div> </react-partial> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_github_remote-form_dist_index_js-node_modules_delegated-events_dist_inde-94fd67-4898d1bf4b51.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/sessions-45d6658f8b6b.js"></script> <header class="HeaderMktg header-logged-out js-details-container js-header Details f4 py-3" role="banner" data-is-top="true" data-color-mode=light data-light-theme=light data-dark-theme=dark> <h2 class="sr-only">Navigation Menu</h2> <button type="button" class="HeaderMktg-backdrop d-lg-none border-0 position-fixed top-0 left-0 width-full height-full js-details-target" aria-label="Toggle navigation"> <span class="d-none">Toggle navigation</span> </button> <div class="d-flex flex-column flex-lg-row flex-items-center px-3 px-md-4 px-lg-5 height-full position-relative z-1"> <div class="d-flex flex-justify-between flex-items-center width-full width-lg-auto"> <div class="flex-1"> <button aria-label="Toggle navigation" aria-expanded="false" type="button" data-view-component="true" class="js-details-target js-nav-padding-recalculate js-header-menu-toggle Button--link Button--medium Button d-lg-none color-fg-inherit p-1"> <span class="Button-content"> <span class="Button-label"><div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div> <div class="HeaderMenu-toggle-bar rounded my-1"></div></span> </span> </button> </div> <a class="mr-lg-3 color-fg-inherit flex-order-2 js-prevent-focus-on-mobile-nav" href="/" aria-label="Homepage" data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Logomark;ref_loc:Header&quot;}"> <svg height="32" aria-hidden="true" viewBox="0 0 24 24" version="1.1" width="32" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12 1C5.9225 1 1 5.9225 1 12C1 16.8675 4.14875 20.9787 8.52125 22.4362C9.07125 22.5325 9.2775 22.2025 9.2775 21.9137C9.2775 21.6525 9.26375 20.7862 9.26375 19.865C6.5 20.3737 5.785 19.1912 5.565 18.5725C5.44125 18.2562 4.905 17.28 4.4375 17.0187C4.0525 16.8125 3.5025 16.3037 4.42375 16.29C5.29 16.2762 5.90875 17.0875 6.115 17.4175C7.105 19.0812 8.68625 18.6137 9.31875 18.325C9.415 17.61 9.70375 17.1287 10.02 16.8537C7.5725 16.5787 5.015 15.63 5.015 11.4225C5.015 10.2262 5.44125 9.23625 6.1425 8.46625C6.0325 8.19125 5.6475 7.06375 6.2525 5.55125C6.2525 5.55125 7.17375 5.2625 9.2775 6.67875C10.1575 6.43125 11.0925 6.3075 12.0275 6.3075C12.9625 6.3075 13.8975 6.43125 14.7775 6.67875C16.8813 5.24875 17.8025 5.55125 17.8025 5.55125C18.4075 7.06375 18.0225 8.19125 17.9125 8.46625C18.6138 9.23625 19.04 10.2125 19.04 11.4225C19.04 15.6437 16.4688 16.5787 14.0213 16.8537C14.42 17.1975 14.7638 17.8575 14.7638 18.8887C14.7638 20.36 14.75 21.5425 14.75 21.9137C14.75 22.2025 14.9563 22.5462 15.5063 22.4362C19.8513 20.9787 23 16.8537 23 12C23 5.9225 18.0775 1 12 1Z"></path> </svg> </a> <div class="flex-1 flex-order-2 text-right"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Faimeos%2Fmap" class="HeaderMenu-link HeaderMenu-button d-inline-flex d-lg-none flex-order-1 f5 no-underline border color-border-default rounded-2 px-2 py-1 color-fg-inherit js-prevent-focus-on-mobile-nav" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/aimeos/map&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c6cee6e2730db5575fa268abe1d1b03c9368e793e5132b520333414b45f7e8c5" data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to Sign in&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}" > Sign in </a> </div> </div> <div class="HeaderMenu js-header-menu height-fit position-lg-relative d-lg-flex flex-column flex-auto top-0"> <div class="HeaderMenu-wrapper d-flex flex-column flex-self-start flex-lg-row flex-auto rounded rounded-lg-0"> <nav class="HeaderMenu-nav" aria-label="Global"> <ul class="d-lg-flex list-style-none"> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Product <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_copilot&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_copilot_link_product_navbar&quot;}" href="https://github.com/features/copilot"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Copilot</div> Write better code with AI </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_advanced_security_link_product_navbar&quot;}" href="https://github.com/security/advanced-security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Advanced Security</div> Find and fix vulnerabilities </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;actions&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;actions_link_product_navbar&quot;}" href="https://github.com/features/actions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-workflow color-fg-subtle mr-3"> <path d="M1 3a2 2 0 0 1 2-2h6.5a2 2 0 0 1 2 2v6.5a2 2 0 0 1-2 2H7v4.063C7 16.355 7.644 17 8.438 17H12.5v-2.5a2 2 0 0 1 2-2H21a2 2 0 0 1 2 2V21a2 2 0 0 1-2 2h-6.5a2 2 0 0 1-2-2v-2.5H8.437A2.939 2.939 0 0 1 5.5 15.562V11.5H3a2 2 0 0 1-2-2Zm2-.5a.5.5 0 0 0-.5.5v6.5a.5.5 0 0 0 .5.5h6.5a.5.5 0 0 0 .5-.5V3a.5.5 0 0 0-.5-.5ZM14.5 14a.5.5 0 0 0-.5.5V21a.5.5 0 0 0 .5.5H21a.5.5 0 0 0 .5-.5v-6.5a.5.5 0 0 0-.5-.5Z"></path> </svg> <div> <div class="color-fg-default h4">Actions</div> Automate any workflow </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;codespaces&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;codespaces_link_product_navbar&quot;}" href="https://github.com/features/codespaces"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-codespaces color-fg-subtle mr-3"> <path d="M3.5 3.75C3.5 2.784 4.284 2 5.25 2h13.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 18.75 13H5.25a1.75 1.75 0 0 1-1.75-1.75Zm-2 12c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v4a1.75 1.75 0 0 1-1.75 1.75H3.25a1.75 1.75 0 0 1-1.75-1.75ZM5.25 3.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h13.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Zm-2 12a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h17.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25Z"></path><path d="M10 17.75a.75.75 0 0 1 .75-.75h6.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> <div> <div class="color-fg-default h4">Codespaces</div> Instant dev environments </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;issues&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;issues_link_product_navbar&quot;}" href="https://github.com/features/issues"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-issue-opened color-fg-subtle mr-3"> <path d="M12 1c6.075 0 11 4.925 11 11s-4.925 11-11 11S1 18.075 1 12 5.925 1 12 1ZM2.5 12a9.5 9.5 0 0 0 9.5 9.5 9.5 9.5 0 0 0 9.5-9.5A9.5 9.5 0 0 0 12 2.5 9.5 9.5 0 0 0 2.5 12Zm9.5 2a2 2 0 1 1-.001-3.999A2 2 0 0 1 12 14Z"></path> </svg> <div> <div class="color-fg-default h4">Issues</div> Plan and track work </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;code_review&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;code_review_link_product_navbar&quot;}" href="https://github.com/features/code-review"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-review color-fg-subtle mr-3"> <path d="M10.3 6.74a.75.75 0 0 1-.04 1.06l-2.908 2.7 2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M1.5 4.25c0-.966.784-1.75 1.75-1.75h17.5c.966 0 1.75.784 1.75 1.75v12.5a1.75 1.75 0 0 1-1.75 1.75h-9.69l-3.573 3.573A1.458 1.458 0 0 1 5 21.043V18.5H3.25a1.75 1.75 0 0 1-1.75-1.75ZM3.25 4a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h2.5a.75.75 0 0 1 .75.75v3.19l3.72-3.72a.749.749 0 0 1 .53-.22h10a.25.25 0 0 0 .25-.25V4.25a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Review</div> Manage code changes </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;discussions&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;discussions_link_product_navbar&quot;}" href="https://github.com/features/discussions"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Discussions</div> Collaborate outside of code </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;code_search&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;code_search_link_product_navbar&quot;}" href="https://github.com/features/code-search"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-code-square color-fg-subtle mr-3"> <path d="M10.3 8.24a.75.75 0 0 1-.04 1.06L7.352 12l2.908 2.7a.75.75 0 1 1-1.02 1.1l-3.5-3.25a.75.75 0 0 1 0-1.1l3.5-3.25a.75.75 0 0 1 1.06.04Zm3.44 1.06a.75.75 0 1 1 1.02-1.1l3.5 3.25a.75.75 0 0 1 0 1.1l-3.5 3.25a.75.75 0 1 1-1.02-1.1l2.908-2.7-2.908-2.7Z"></path><path d="M2 3.75C2 2.784 2.784 2 3.75 2h16.5c.966 0 1.75.784 1.75 1.75v16.5A1.75 1.75 0 0 1 20.25 22H3.75A1.75 1.75 0 0 1 2 20.25Zm1.75-.25a.25.25 0 0 0-.25.25v16.5c0 .138.112.25.25.25h16.5a.25.25 0 0 0 .25-.25V3.75a.25.25 0 0 0-.25-.25Z"></path> </svg> <div> <div class="color-fg-default h4">Code Search</div> Find more, search less </div> </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="product-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="product-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;all_features&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;all_features_link_product_navbar&quot;}" href="https://github.com/features"> All features </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;documentation&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;documentation_link_product_navbar&quot;}" href="https://docs.github.com"> Documentation <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_skills&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_skills_link_product_navbar&quot;}" href="https://skills.github.com"> GitHub Skills <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;blog&quot;,&quot;context&quot;:&quot;product&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;blog_link_product_navbar&quot;}" href="https://github.blog"> Blog <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Solutions <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 pb-lg-3 mb-3 mb-lg-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-company-size-heading">By company size</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-company-size-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;enterprises&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;enterprises_link_solutions_navbar&quot;}" href="https://github.com/enterprise"> Enterprises </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;small_and_medium_teams&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;small_and_medium_teams_link_solutions_navbar&quot;}" href="https://github.com/team"> Small and medium teams </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;startups&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;startups_link_solutions_navbar&quot;}" href="https://github.com/enterprise/startups"> Startups </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;nonprofits&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;nonprofits_link_solutions_navbar&quot;}" href="/solutions/industry/nonprofits"> Nonprofits </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-use-case-heading">By use case</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-use-case-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devsecops&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devsecops_link_solutions_navbar&quot;}" href="/solutions/use-case/devsecops"> DevSecOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devops&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devops_link_solutions_navbar&quot;}" href="/solutions/use-case/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ci_cd&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ci_cd_link_solutions_navbar&quot;}" href="/solutions/use-case/ci-cd"> CI/CD </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all_use_cases&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_use_cases_link_solutions_navbar&quot;}" href="/solutions/use-case"> View all use cases </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="solutions-by-industry-heading">By industry</span> <ul class="list-style-none f5" aria-labelledby="solutions-by-industry-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;healthcare&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;healthcare_link_solutions_navbar&quot;}" href="/solutions/industry/healthcare"> Healthcare </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;financial_services&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;financial_services_link_solutions_navbar&quot;}" href="/solutions/industry/financial-services"> Financial services </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;manufacturing&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;manufacturing_link_solutions_navbar&quot;}" href="/solutions/industry/manufacturing"> Manufacturing </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;government&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;government_link_solutions_navbar&quot;}" href="/solutions/industry/government"> Government </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all_industries&quot;,&quot;context&quot;:&quot;solutions&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_industries_link_solutions_navbar&quot;}" href="/solutions/industry"> View all industries </a></li> </ul> </div> </div> <div class="HeaderMenu-trailing-link rounded-bottom-2 flex-shrink-0 mt-lg-4 px-lg-4 py-4 py-lg-3 f5 text-semibold"> <a href="/solutions"> View all solutions <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-right HeaderMenu-trailing-link-icon"> <path d="M6.22 3.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L9.94 8 6.22 4.28a.75.75 0 0 1 0-1.06Z"></path> </svg> </a> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Resources <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 d-lg-flex flex-wrap dropdown-menu-wide"> <div class="HeaderMenu-column px-lg-4 border-lg-right mb-4 mb-lg-0 pr-lg-7"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-topics-heading">Topics</span> <ul class="list-style-none f5" aria-labelledby="resources-topics-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ai&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ai_link_resources_navbar&quot;}" href="/resources/articles/ai"> AI </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;devops&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;devops_link_resources_navbar&quot;}" href="/resources/articles/devops"> DevOps </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;security&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;security_link_resources_navbar&quot;}" href="/resources/articles/security"> Security </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;software_development&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;software_development_link_resources_navbar&quot;}" href="/resources/articles/software-development"> Software Development </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;view_all&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;view_all_link_resources_navbar&quot;}" href="/resources/articles"> View all </a></li> </ul> </div> </div> <div class="HeaderMenu-column px-lg-4"> <div class="border-bottom pb-3 pb-lg-0 border-lg-bottom-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="resources-explore-heading">Explore</span> <ul class="list-style-none f5" aria-labelledby="resources-explore-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;learning_pathways&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;learning_pathways_link_resources_navbar&quot;}" href="https://resources.github.com/learn/pathways"> Learning Pathways <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;events_amp_webinars&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;events_amp_webinars_link_resources_navbar&quot;}" href="https://resources.github.com"> Events &amp; Webinars <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;ebooks_amp_whitepapers&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;ebooks_amp_whitepapers_link_resources_navbar&quot;}" href="https://github.com/resources/whitepapers"> Ebooks &amp; Whitepapers </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;customer_stories&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;customer_stories_link_resources_navbar&quot;}" href="https://github.com/customer-stories"> Customer Stories </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary Link--external" target="_blank" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;partners&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;partners_link_resources_navbar&quot;}" href="https://partner.github.com"> Partners <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link-external HeaderMenu-external-icon color-fg-subtle"> <path d="M3.75 2h3.5a.75.75 0 0 1 0 1.5h-3.5a.25.25 0 0 0-.25.25v8.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-3.5a.75.75 0 0 1 1.5 0v3.5A1.75 1.75 0 0 1 12.25 14h-8.5A1.75 1.75 0 0 1 2 12.25v-8.5C2 2.784 2.784 2 3.75 2Zm6.854-1h4.146a.25.25 0 0 1 .25.25v4.146a.25.25 0 0 1-.427.177L13.03 4.03 9.28 7.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.75-3.75-1.543-1.543A.25.25 0 0 1 10.604 1Z"></path> </svg> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;executive_insights&quot;,&quot;context&quot;:&quot;resources&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;executive_insights_link_resources_navbar&quot;}" href="https://github.com/solutions/executive-insights"> Executive Insights </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Open Source <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_sponsors&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_sponsors_link_open_source_navbar&quot;}" href="/sponsors"> <div> <div class="color-fg-default h4">GitHub Sponsors</div> Fund open source developers </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;the_readme_project&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;the_readme_project_link_open_source_navbar&quot;}" href="https://github.com/readme"> <div> <div class="color-fg-default h4">The ReadME Project</div> GitHub community articles </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="open-source-repositories-heading">Repositories</span> <ul class="list-style-none f5" aria-labelledby="open-source-repositories-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;topics&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;topics_link_open_source_navbar&quot;}" href="https://github.com/topics"> Topics </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;trending&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;trending_link_open_source_navbar&quot;}" href="https://github.com/trending"> Trending </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;collections&quot;,&quot;context&quot;:&quot;open_source&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;collections_link_open_source_navbar&quot;}" href="https://github.com/collections"> Collections </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <button type="button" class="HeaderMenu-link border-0 width-full width-lg-auto px-0 px-lg-2 py-lg-2 no-wrap d-flex flex-items-center flex-justify-between js-details-target" aria-expanded="false"> Enterprise <svg opacity="0.5" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-chevron-down HeaderMenu-icon ml-1"> <path d="M12.78 5.22a.749.749 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.06 0L3.22 6.28a.749.749 0 1 1 1.06-1.06L8 8.939l3.72-3.719a.749.749 0 0 1 1.06 0Z"></path> </svg> </button> <div class="HeaderMenu-dropdown dropdown-menu rounded m-0 p-0 pt-2 pt-lg-4 position-relative position-lg-absolute left-0 left-lg-n3 pb-2 pb-lg-4 px-lg-4"> <div class="HeaderMenu-column"> <div class="border-bottom pb-3 pb-lg-0 pb-lg-3 mb-3 mb-lg-0 mb-lg-3"> <ul class="list-style-none f5" > <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;enterprise_platform&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;enterprise_platform_link_enterprise_navbar&quot;}" href="/enterprise"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-stack color-fg-subtle mr-3"> <path d="M11.063 1.456a1.749 1.749 0 0 1 1.874 0l8.383 5.316a1.751 1.751 0 0 1 0 2.956l-8.383 5.316a1.749 1.749 0 0 1-1.874 0L2.68 9.728a1.751 1.751 0 0 1 0-2.956Zm1.071 1.267a.25.25 0 0 0-.268 0L3.483 8.039a.25.25 0 0 0 0 .422l8.383 5.316a.25.25 0 0 0 .268 0l8.383-5.316a.25.25 0 0 0 0-.422Z"></path><path d="M1.867 12.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path><path d="M1.867 16.324a.75.75 0 0 1 1.035-.232l8.964 5.685a.25.25 0 0 0 .268 0l8.964-5.685a.75.75 0 0 1 .804 1.267l-8.965 5.685a1.749 1.749 0 0 1-1.874 0l-8.965-5.685a.75.75 0 0 1-.231-1.035Z"></path> </svg> <div> <div class="color-fg-default h4">Enterprise platform</div> AI-powered developer platform </div> </a></li> </ul> </div> <div class="border-bottom pb-3 pb-lg-0 border-bottom-0"> <span class="d-block h4 color-fg-default my-1" id="enterprise-available-add-ons-heading">Available add-ons</span> <ul class="list-style-none f5" aria-labelledby="enterprise-available-add-ons-heading"> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;github_advanced_security&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;github_advanced_security_link_enterprise_navbar&quot;}" href="https://github.com/security/advanced-security"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-shield-check color-fg-subtle mr-3"> <path d="M16.53 9.78a.75.75 0 0 0-1.06-1.06L11 13.19l-1.97-1.97a.75.75 0 0 0-1.06 1.06l2.5 2.5a.75.75 0 0 0 1.06 0l5-5Z"></path><path d="m12.54.637 8.25 2.675A1.75 1.75 0 0 1 22 4.976V10c0 6.19-3.771 10.704-9.401 12.83a1.704 1.704 0 0 1-1.198 0C5.77 20.705 2 16.19 2 10V4.976c0-.758.489-1.43 1.21-1.664L11.46.637a1.748 1.748 0 0 1 1.08 0Zm-.617 1.426-8.25 2.676a.249.249 0 0 0-.173.237V10c0 5.46 3.28 9.483 8.43 11.426a.199.199 0 0 0 .14 0C17.22 19.483 20.5 15.461 20.5 10V4.976a.25.25 0 0 0-.173-.237l-8.25-2.676a.253.253 0 0 0-.154 0Z"></path> </svg> <div> <div class="color-fg-default h4">GitHub Advanced Security</div> Enterprise-grade security features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description pb-lg-3" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;copilot_for_business&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;copilot_for_business_link_enterprise_navbar&quot;}" href="/features/copilot/copilot-business"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-copilot color-fg-subtle mr-3"> <path d="M23.922 16.992c-.861 1.495-5.859 5.023-11.922 5.023-6.063 0-11.061-3.528-11.922-5.023A.641.641 0 0 1 0 16.736v-2.869a.841.841 0 0 1 .053-.22c.372-.935 1.347-2.292 2.605-2.656.167-.429.414-1.055.644-1.517a10.195 10.195 0 0 1-.052-1.086c0-1.331.282-2.499 1.132-3.368.397-.406.89-.717 1.474-.952 1.399-1.136 3.392-2.093 6.122-2.093 2.731 0 4.767.957 6.166 2.093.584.235 1.077.546 1.474.952.85.869 1.132 2.037 1.132 3.368 0 .368-.014.733-.052 1.086.23.462.477 1.088.644 1.517 1.258.364 2.233 1.721 2.605 2.656a.832.832 0 0 1 .053.22v2.869a.641.641 0 0 1-.078.256ZM12.172 11h-.344a4.323 4.323 0 0 1-.355.508C10.703 12.455 9.555 13 7.965 13c-1.725 0-2.989-.359-3.782-1.259a2.005 2.005 0 0 1-.085-.104L4 11.741v6.585c1.435.779 4.514 2.179 8 2.179 3.486 0 6.565-1.4 8-2.179v-6.585l-.098-.104s-.033.045-.085.104c-.793.9-2.057 1.259-3.782 1.259-1.59 0-2.738-.545-3.508-1.492a4.323 4.323 0 0 1-.355-.508h-.016.016Zm.641-2.935c.136 1.057.403 1.913.878 2.497.442.544 1.134.938 2.344.938 1.573 0 2.292-.337 2.657-.751.384-.435.558-1.15.558-2.361 0-1.14-.243-1.847-.705-2.319-.477-.488-1.319-.862-2.824-1.025-1.487-.161-2.192.138-2.533.529-.269.307-.437.808-.438 1.578v.021c0 .265.021.562.063.893Zm-1.626 0c.042-.331.063-.628.063-.894v-.02c-.001-.77-.169-1.271-.438-1.578-.341-.391-1.046-.69-2.533-.529-1.505.163-2.347.537-2.824 1.025-.462.472-.705 1.179-.705 2.319 0 1.211.175 1.926.558 2.361.365.414 1.084.751 2.657.751 1.21 0 1.902-.394 2.344-.938.475-.584.742-1.44.878-2.497Z"></path><path d="M14.5 14.25a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Zm-5 0a1 1 0 0 1 1 1v2a1 1 0 0 1-2 0v-2a1 1 0 0 1 1-1Z"></path> </svg> <div> <div class="color-fg-default h4">Copilot for business</div> Enterprise-grade AI features </div> </a></li> <li> <a class="HeaderMenu-dropdown-link d-block no-underline position-relative py-2 Link--secondary d-flex flex-items-center Link--has-description" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;premium_support&quot;,&quot;context&quot;:&quot;enterprise&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;premium_support_link_enterprise_navbar&quot;}" href="/premium-support"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-comment-discussion color-fg-subtle mr-3"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 14.25 14H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 15.543V14H1.75A1.75 1.75 0 0 1 0 12.25v-9.5C0 1.784.784 1 1.75 1ZM1.5 2.75v9.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-9.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Z"></path><path d="M22.5 8.75a.25.25 0 0 0-.25-.25h-3.5a.75.75 0 0 1 0-1.5h3.5c.966 0 1.75.784 1.75 1.75v9.5A1.75 1.75 0 0 1 22.25 20H21v1.543a1.457 1.457 0 0 1-2.487 1.03L15.939 20H10.75A1.75 1.75 0 0 1 9 18.25v-1.465a.75.75 0 0 1 1.5 0v1.465c0 .138.112.25.25.25h5.5a.75.75 0 0 1 .53.22l2.72 2.72v-2.19a.75.75 0 0 1 .75-.75h2a.25.25 0 0 0 .25-.25v-9.5Z"></path> </svg> <div> <div class="color-fg-default h4">Premium Support</div> Enterprise-grade 24/7 support </div> </a></li> </ul> </div> </div> </div> </li> <li class="HeaderMenu-item position-relative flex-wrap flex-justify-between flex-items-center d-block d-lg-flex flex-lg-nowrap flex-lg-items-center js-details-container js-header-menu-item"> <a class="HeaderMenu-link no-underline px-0 px-lg-2 py-3 py-lg-2 d-block d-lg-inline-block" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;pricing&quot;,&quot;context&quot;:&quot;global&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;pricing_link_global_navbar&quot;}" href="https://github.com/pricing">Pricing</a> </li> </ul> </nav> <div class="d-flex flex-column flex-lg-row width-full flex-justify-end flex-lg-items-center text-center mt-3 mt-lg-0 text-lg-left ml-lg-3"> <qbsearch-input class="search-input" data-scope="repo:aimeos/map" data-custom-scopes-path="/search/custom_scopes" data-delete-custom-scopes-csrf="qh05qdrZVI0mFSYwdFBVYkAol2ptmyUln3Q3CbdJYuzpE1cblZG_j84dQTDViKVN_2ExwZMPu_zW-0pSnOfHWg" data-max-custom-scopes="10" data-header-redesign-enabled="false" data-initial-value="" data-blackbird-suggestions-path="/search/suggestions" data-jump-to-suggestions-path="/_graphql/GetSuggestedNavigationDestinations" data-current-repository="aimeos/map" data-current-org="" data-current-owner="aimeos" data-logged-in="false" data-copilot-chat-enabled="false" data-nl-search-enabled="false" data-retain-scroll-position="true"> <div class="search-input-container search-with-dialog position-relative d-flex flex-row flex-items-center mr-4 rounded" data-action="click:qbsearch-input#searchInputContainerClicked" > <button type="button" class="header-search-button placeholder input-button form-control d-flex flex-1 flex-self-stretch flex-items-center no-wrap width-full py-0 pl-2 pr-0 text-left border-0 box-shadow-none" data-target="qbsearch-input.inputButton" aria-label="Search or jump to…" aria-haspopup="dialog" placeholder="Search or jump to..." data-hotkey=s,/ autocapitalize="off" data-analytics-event="{&quot;location&quot;:&quot;navbar&quot;,&quot;action&quot;:&quot;searchbar&quot;,&quot;context&quot;:&quot;global&quot;,&quot;tag&quot;:&quot;input&quot;,&quot;label&quot;:&quot;searchbar_input_global_navbar&quot;}" data-action="click:qbsearch-input#handleExpand" > <div class="mr-2 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </div> <span class="flex-1" data-target="qbsearch-input.inputButtonText">Search or jump to...</span> <div class="d-flex" data-target="qbsearch-input.hotkeyIndicator"> <svg xmlns="http://www.w3.org/2000/svg" width="22" height="20" aria-hidden="true" class="mr-1"><path fill="none" stroke="#979A9C" opacity=".4" d="M3.5.5h12c1.7 0 3 1.3 3 3v13c0 1.7-1.3 3-3 3h-12c-1.7 0-3-1.3-3-3v-13c0-1.7 1.3-3 3-3z"></path><path fill="#979A9C" d="M11.8 6L8 15.1h-.9L10.8 6h1z"></path></svg> </div> </button> <input type="hidden" name="type" class="js-site-search-type-field"> <div class="Overlay--hidden " data-modal-dialog-overlay> <modal-dialog data-action="close:qbsearch-input#handleClose cancel:qbsearch-input#handleClose" data-target="qbsearch-input.searchSuggestionsDialog" role="dialog" id="search-suggestions-dialog" aria-modal="true" aria-labelledby="search-suggestions-dialog-header" data-view-component="true" class="Overlay Overlay--width-large Overlay--height-auto"> <h1 id="search-suggestions-dialog-header" class="sr-only">Search code, repositories, users, issues, pull requests...</h1> <div class="Overlay-body Overlay-body--paddingNone"> <div data-view-component="true"> <div class="search-suggestions position-fixed width-full color-shadow-large border color-fg-default color-bg-default overflow-hidden d-flex flex-column query-builder-container" style="border-radius: 12px;" data-target="qbsearch-input.queryBuilderContainer" hidden > <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="query-builder-test-form" action="" accept-charset="UTF-8" method="get"> <query-builder data-target="qbsearch-input.queryBuilder" id="query-builder-query-builder-test" data-filter-key=":" data-view-component="true" class="QueryBuilder search-query-builder"> <div class="FormControl FormControl--fullWidth"> <label id="query-builder-test-label" for="query-builder-test" class="FormControl-label sr-only"> Search </label> <div class="QueryBuilder-StyledInput width-fit " data-target="query-builder.styledInput" > <span id="query-builder-test-leadingvisual-wrap" class="FormControl-input-leadingVisualWrap QueryBuilder-leadingVisualWrap"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search FormControl-input-leadingVisual"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </span> <div data-target="query-builder.styledInputContainer" class="QueryBuilder-StyledInputContainer"> <div aria-hidden="true" class="QueryBuilder-StyledInputContent" data-target="query-builder.styledInputContent" ></div> <div class="QueryBuilder-InputWrapper"> <div aria-hidden="true" class="QueryBuilder-Sizer" data-target="query-builder.sizer"></div> <input id="query-builder-test" name="query-builder-test" value="" autocomplete="off" type="text" role="combobox" spellcheck="false" aria-expanded="false" aria-describedby="validation-39720ffe-d5d2-45b7-b2de-33a99384b135" data-target="query-builder.input" data-action=" input:query-builder#inputChange blur:query-builder#inputBlur keydown:query-builder#inputKeydown focus:query-builder#inputFocus " data-view-component="true" class="FormControl-input QueryBuilder-Input FormControl-medium" /> </div> </div> <span class="sr-only" id="query-builder-test-clear">Clear</span> <button role="button" id="query-builder-test-clear-button" aria-labelledby="query-builder-test-clear query-builder-test-label" data-target="query-builder.clearButton" data-action=" click:query-builder#clear focus:query-builder#clearButtonFocus blur:query-builder#clearButtonBlur " variant="small" hidden="hidden" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium mr-1 px-2 py-0 d-flex flex-items-center rounded-1 color-fg-muted"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x-circle-fill Button-visual"> <path d="M2.343 13.657A8 8 0 1 1 13.658 2.343 8 8 0 0 1 2.343 13.657ZM6.03 4.97a.751.751 0 0 0-1.042.018.751.751 0 0 0-.018 1.042L6.94 8 4.97 9.97a.749.749 0 0 0 .326 1.275.749.749 0 0 0 .734-.215L8 9.06l1.97 1.97a.749.749 0 0 0 1.275-.326.749.749 0 0 0-.215-.734L9.06 8l1.97-1.97a.749.749 0 0 0-.326-1.275.749.749 0 0 0-.734.215L8 6.94Z"></path> </svg> </button> </div> <template id="search-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-search"> <path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path> </svg> </template> <template id="code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="file-code-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-file-code"> <path d="M4 1.75C4 .784 4.784 0 5.75 0h5.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v8.586A1.75 1.75 0 0 1 14.25 15h-9a.75.75 0 0 1 0-1.5h9a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 10 4.25V1.5H5.75a.25.25 0 0 0-.25.25v2.5a.75.75 0 0 1-1.5 0Zm1.72 4.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734l1.47-1.47-1.47-1.47a.75.75 0 0 1 0-1.06ZM3.28 7.78 1.81 9.25l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Zm8.22-6.218V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path> </svg> </template> <template id="history-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-history"> <path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path> </svg> </template> <template id="repo-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> </template> <template id="bookmark-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bookmark"> <path d="M3 2.75C3 1.784 3.784 1 4.75 1h6.5c.966 0 1.75.784 1.75 1.75v11.5a.75.75 0 0 1-1.227.579L8 11.722l-3.773 3.107A.751.751 0 0 1 3 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v9.91l3.023-2.489a.75.75 0 0 1 .954 0l3.023 2.49V2.75a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="plus-circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-plus-circle"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm7.25-3.25v2.5h2.5a.75.75 0 0 1 0 1.5h-2.5v2.5a.75.75 0 0 1-1.5 0v-2.5h-2.5a.75.75 0 0 1 0-1.5h2.5v-2.5a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="circle-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> </template> <template id="trash-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-trash"> <path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"></path> </svg> </template> <template id="team-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-people"> <path d="M2 5.5a3.5 3.5 0 1 1 5.898 2.549 5.508 5.508 0 0 1 3.034 4.084.75.75 0 1 1-1.482.235 4 4 0 0 0-7.9 0 .75.75 0 0 1-1.482-.236A5.507 5.507 0 0 1 3.102 8.05 3.493 3.493 0 0 1 2 5.5ZM11 4a3.001 3.001 0 0 1 2.22 5.018 5.01 5.01 0 0 1 2.56 3.012.749.749 0 0 1-.885.954.752.752 0 0 1-.549-.514 3.507 3.507 0 0 0-2.522-2.372.75.75 0 0 1-.574-.73v-.352a.75.75 0 0 1 .416-.672A1.5 1.5 0 0 0 11 5.5.75.75 0 0 1 11 4Zm-5.5-.5a2 2 0 1 0-.001 3.999A2 2 0 0 0 5.5 3.5Z"></path> </svg> </template> <template id="project-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-project"> <path d="M1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0ZM1.5 1.75v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25ZM11.75 3a.75.75 0 0 1 .75.75v7.5a.75.75 0 0 1-1.5 0v-7.5a.75.75 0 0 1 .75-.75Zm-8.25.75a.75.75 0 0 1 1.5 0v5.5a.75.75 0 0 1-1.5 0ZM8 3a.75.75 0 0 1 .75.75v3.5a.75.75 0 0 1-1.5 0v-3.5A.75.75 0 0 1 8 3Z"></path> </svg> </template> <template id="pencil-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pencil"> <path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path> </svg> </template> <template id="copilot-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot"> <path d="M7.998 15.035c-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.201-.508-.254-1.084-.254-1.656 0-.87.128-1.769.693-2.484.579-.733 1.494-1.124 2.724-1.261 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095v1.872c0 .766-3.351 3.795-8.002 3.795Zm0-1.485c2.28 0 4.584-1.11 5.002-1.433V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-1.146 0-2.059-.327-2.71-.991A3.222 3.222 0 0 1 8 6.303a3.24 3.24 0 0 1-.544.743c-.65.664-1.563.991-2.71.991-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433ZM6.762 2.83c-.193-.206-.637-.413-1.682-.297-1.019.113-1.479.404-1.713.7-.247.312-.369.789-.369 1.554 0 .793.129 1.171.308 1.371.162.181.519.379 1.442.379.853 0 1.339-.235 1.638-.54.315-.322.527-.827.617-1.553.117-.935-.037-1.395-.241-1.614Zm4.155-.297c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Z"></path><path d="M6.25 9.037a.75.75 0 0 1 .75.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 .75-.75Zm4.25.75v1.501a.75.75 0 0 1-1.5 0V9.787a.75.75 0 0 1 1.5 0Z"></path> </svg> </template> <template id="copilot-error-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copilot-error"> <path d="M16 11.24c0 .112-.072.274-.21.467L13 9.688V7.862l-.023-.116c-.49.21-1.075.291-1.727.291-.198 0-.388-.009-.571-.029L6.833 5.226a4.01 4.01 0 0 0 .17-.782c.117-.935-.037-1.395-.241-1.614-.193-.206-.637-.413-1.682-.297-.683.076-1.115.231-1.395.415l-1.257-.91c.579-.564 1.413-.877 2.485-.996 1.206-.134 2.262.034 2.944.765.05.053.096.108.139.165.044-.057.094-.112.143-.165.682-.731 1.738-.899 2.944-.765 1.23.137 2.145.528 2.724 1.261.566.715.693 1.614.693 2.484 0 .572-.053 1.148-.254 1.656.066.228.098.429.126.612.012.076.024.148.037.218.924.385 1.522 1.471 1.591 2.095Zm-5.083-8.707c-1.044-.116-1.488.091-1.681.297-.204.219-.359.679-.242 1.614.091.726.303 1.231.618 1.553.299.305.784.54 1.638.54.922 0 1.28-.198 1.442-.379.179-.2.308-.578.308-1.371 0-.765-.123-1.242-.37-1.554-.233-.296-.693-.587-1.713-.7Zm2.511 11.074c-1.393.776-3.272 1.428-5.43 1.428-4.562 0-7.873-2.914-7.998-3.749V9.338c.085-.628.677-1.686 1.588-2.065.013-.07.024-.143.036-.218.029-.183.06-.384.126-.612-.18-.455-.241-.963-.252-1.475L.31 4.107A.747.747 0 0 1 0 3.509V3.49a.748.748 0 0 1 .625-.73c.156-.026.306.047.435.139l14.667 10.578a.592.592 0 0 1 .227.264.752.752 0 0 1 .046.249v.022a.75.75 0 0 1-1.19.596Zm-1.367-.991L5.635 7.964a5.128 5.128 0 0 1-.889.073c-.652 0-1.236-.081-1.727-.291l-.023.116v4.255c.419.323 2.722 1.433 5.002 1.433 1.539 0 3.089-.505 4.063-.934Z"></path> </svg> </template> <template id="workflow-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-workflow"> <path d="M0 1.75C0 .784.784 0 1.75 0h3.5C6.216 0 7 .784 7 1.75v3.5A1.75 1.75 0 0 1 5.25 7H4v4a1 1 0 0 0 1 1h4v-1.25C9 9.784 9.784 9 10.75 9h3.5c.966 0 1.75.784 1.75 1.75v3.5A1.75 1.75 0 0 1 14.25 16h-3.5A1.75 1.75 0 0 1 9 14.25v-.75H5A2.5 2.5 0 0 1 2.5 11V7h-.75A1.75 1.75 0 0 1 0 5.25Zm1.75-.25a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Zm9 9a.25.25 0 0 0-.25.25v3.5c0 .138.112.25.25.25h3.5a.25.25 0 0 0 .25-.25v-3.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="book-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> </template> <template id="code-review-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-review"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 13H8.061l-2.574 2.573A1.458 1.458 0 0 1 3 14.543V13H1.75A1.75 1.75 0 0 1 0 11.25v-8.5C0 1.784.784 1 1.75 1ZM1.5 2.75v8.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h6.5a.25.25 0 0 0 .25-.25v-8.5a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm5.28 1.72a.75.75 0 0 1 0 1.06L5.31 7l1.47 1.47a.751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018l-2-2a.75.75 0 0 1 0-1.06l2-2a.75.75 0 0 1 1.06 0Zm2.44 0a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L10.69 7 9.22 5.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </template> <template id="codespaces-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-codespaces"> <path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path> </svg> </template> <template id="comment-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment"> <path d="M1 2.75C1 1.784 1.784 1 2.75 1h10.5c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 13.25 12H9.06l-2.573 2.573A1.458 1.458 0 0 1 4 13.543V12H2.75A1.75 1.75 0 0 1 1 10.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h2a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h4.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> </template> <template id="comment-discussion-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-comment-discussion"> <path d="M1.75 1h8.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 10.25 10H7.061l-2.574 2.573A1.458 1.458 0 0 1 2 11.543V10h-.25A1.75 1.75 0 0 1 0 8.25v-5.5C0 1.784.784 1 1.75 1ZM1.5 2.75v5.5c0 .138.112.25.25.25h1a.75.75 0 0 1 .75.75v2.19l2.72-2.72a.749.749 0 0 1 .53-.22h3.5a.25.25 0 0 0 .25-.25v-5.5a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25Zm13 2a.25.25 0 0 0-.25-.25h-.5a.75.75 0 0 1 0-1.5h.5c.966 0 1.75.784 1.75 1.75v5.5A1.75 1.75 0 0 1 14.25 12H14v1.543a1.458 1.458 0 0 1-2.487 1.03L9.22 12.28a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l2.22 2.22v-2.19a.75.75 0 0 1 .75-.75h1a.25.25 0 0 0 .25-.25Z"></path> </svg> </template> <template id="organization-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-organization"> <path d="M1.75 16A1.75 1.75 0 0 1 0 14.25V1.75C0 .784.784 0 1.75 0h8.5C11.216 0 12 .784 12 1.75v12.5c0 .085-.006.168-.018.25h2.268a.25.25 0 0 0 .25-.25V8.285a.25.25 0 0 0-.111-.208l-1.055-.703a.749.749 0 1 1 .832-1.248l1.055.703c.487.325.779.871.779 1.456v5.965A1.75 1.75 0 0 1 14.25 16h-3.5a.766.766 0 0 1-.197-.026c-.099.017-.2.026-.303.026h-3a.75.75 0 0 1-.75-.75V14h-1v1.25a.75.75 0 0 1-.75.75Zm-.25-1.75c0 .138.112.25.25.25H4v-1.25a.75.75 0 0 1 .75-.75h2.5a.75.75 0 0 1 .75.75v1.25h2.25a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM3.75 6h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 3.75A.75.75 0 0 1 3.75 3h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 3.75Zm4 3A.75.75 0 0 1 7.75 6h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 7 6.75ZM7.75 3h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5ZM3 9.75A.75.75 0 0 1 3.75 9h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 9.75ZM7.75 9h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="rocket-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-rocket"> <path d="M14.064 0h.186C15.216 0 16 .784 16 1.75v.186a8.752 8.752 0 0 1-2.564 6.186l-.458.459c-.314.314-.641.616-.979.904v3.207c0 .608-.315 1.172-.833 1.49l-2.774 1.707a.749.749 0 0 1-1.11-.418l-.954-3.102a1.214 1.214 0 0 1-.145-.125L3.754 9.816a1.218 1.218 0 0 1-.124-.145L.528 8.717a.749.749 0 0 1-.418-1.11l1.71-2.774A1.748 1.748 0 0 1 3.31 4h3.204c.288-.338.59-.665.904-.979l.459-.458A8.749 8.749 0 0 1 14.064 0ZM8.938 3.623h-.002l-.458.458c-.76.76-1.437 1.598-2.02 2.5l-1.5 2.317 2.143 2.143 2.317-1.5c.902-.583 1.74-1.26 2.499-2.02l.459-.458a7.25 7.25 0 0 0 2.123-5.127V1.75a.25.25 0 0 0-.25-.25h-.186a7.249 7.249 0 0 0-5.125 2.123ZM3.56 14.56c-.732.732-2.334 1.045-3.005 1.148a.234.234 0 0 1-.201-.064.234.234 0 0 1-.064-.201c.103-.671.416-2.273 1.15-3.003a1.502 1.502 0 1 1 2.12 2.12Zm6.94-3.935c-.088.06-.177.118-.266.175l-2.35 1.521.548 1.783 1.949-1.2a.25.25 0 0 0 .119-.213ZM3.678 8.116 5.2 5.766c.058-.09.117-.178.176-.266H3.309a.25.25 0 0 0-.213.119l-1.2 1.95ZM12 5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </template> <template id="shield-check-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield-check"> <path d="m8.533.133 5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667l5.25-1.68a1.748 1.748 0 0 1 1.066 0Zm-.61 1.429.001.001-5.25 1.68a.251.251 0 0 0-.174.237V7c0 1.36.275 2.666 1.057 3.859.784 1.194 2.121 2.342 4.366 3.298a.196.196 0 0 0 .154 0c2.245-.957 3.582-2.103 4.366-3.297C13.225 9.666 13.5 8.358 13.5 7V3.48a.25.25 0 0 0-.174-.238l-5.25-1.68a.25.25 0 0 0-.153 0ZM11.28 6.28l-3.5 3.5a.75.75 0 0 1-1.06 0l-1.5-1.5a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215l.97.97 2.97-2.97a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="heart-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-heart"> <path d="m8 14.25.345.666a.75.75 0 0 1-.69 0l-.008-.004-.018-.01a7.152 7.152 0 0 1-.31-.17 22.055 22.055 0 0 1-3.434-2.414C2.045 10.731 0 8.35 0 5.5 0 2.836 2.086 1 4.25 1 5.797 1 7.153 1.802 8 3.02 8.847 1.802 10.203 1 11.75 1 13.914 1 16 2.836 16 5.5c0 2.85-2.045 5.231-3.885 6.818a22.066 22.066 0 0 1-3.744 2.584l-.018.01-.006.003h-.002ZM4.25 2.5c-1.336 0-2.75 1.164-2.75 3 0 2.15 1.58 4.144 3.365 5.682A20.58 20.58 0 0 0 8 13.393a20.58 20.58 0 0 0 3.135-2.211C12.92 9.644 14.5 7.65 14.5 5.5c0-1.836-1.414-3-2.75-3-1.373 0-2.609.986-3.029 2.456a.749.749 0 0 1-1.442 0C6.859 3.486 5.623 2.5 4.25 2.5Z"></path> </svg> </template> <template id="server-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-server"> <path d="M1.75 1h12.5c.966 0 1.75.784 1.75 1.75v4c0 .372-.116.717-.314 1 .198.283.314.628.314 1v4a1.75 1.75 0 0 1-1.75 1.75H1.75A1.75 1.75 0 0 1 0 12.75v-4c0-.358.109-.707.314-1a1.739 1.739 0 0 1-.314-1v-4C0 1.784.784 1 1.75 1ZM1.5 2.75v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25Zm.25 5.75a.25.25 0 0 0-.25.25v4c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-4a.25.25 0 0 0-.25-.25ZM7 4.75A.75.75 0 0 1 7.75 4h4.5a.75.75 0 0 1 0 1.5h-4.5A.75.75 0 0 1 7 4.75ZM7.75 10h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1 0-1.5ZM3 4.75A.75.75 0 0 1 3.75 4h.5a.75.75 0 0 1 0 1.5h-.5A.75.75 0 0 1 3 4.75ZM3.75 10h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1 0-1.5Z"></path> </svg> </template> <template id="globe-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-globe"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM5.78 8.75a9.64 9.64 0 0 0 1.363 4.177c.255.426.542.832.857 1.215.245-.296.551-.705.857-1.215A9.64 9.64 0 0 0 10.22 8.75Zm4.44-1.5a9.64 9.64 0 0 0-1.363-4.177c-.307-.51-.612-.919-.857-1.215a9.927 9.927 0 0 0-.857 1.215A9.64 9.64 0 0 0 5.78 7.25Zm-5.944 1.5H1.543a6.507 6.507 0 0 0 4.666 5.5c-.123-.181-.24-.365-.352-.552-.715-1.192-1.437-2.874-1.581-4.948Zm-2.733-1.5h2.733c.144-2.074.866-3.756 1.58-4.948.12-.197.237-.381.353-.552a6.507 6.507 0 0 0-4.666 5.5Zm10.181 1.5c-.144 2.074-.866 3.756-1.58 4.948-.12.197-.237.381-.353.552a6.507 6.507 0 0 0 4.666-5.5Zm2.733-1.5a6.507 6.507 0 0 0-4.666-5.5c.123.181.24.365.353.552.714 1.192 1.436 2.874 1.58 4.948Z"></path> </svg> </template> <template id="issue-opened-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </template> <template id="device-mobile-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-mobile"> <path d="M3.75 0h8.5C13.216 0 14 .784 14 1.75v12.5A1.75 1.75 0 0 1 12.25 16h-8.5A1.75 1.75 0 0 1 2 14.25V1.75C2 .784 2.784 0 3.75 0ZM3.5 1.75v12.5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25h-8.5a.25.25 0 0 0-.25.25ZM8 13a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path> </svg> </template> <template id="package-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-package"> <path d="m8.878.392 5.25 3.045c.54.314.872.89.872 1.514v6.098a1.75 1.75 0 0 1-.872 1.514l-5.25 3.045a1.75 1.75 0 0 1-1.756 0l-5.25-3.045A1.75 1.75 0 0 1 1 11.049V4.951c0-.624.332-1.201.872-1.514L7.122.392a1.75 1.75 0 0 1 1.756 0ZM7.875 1.69l-4.63 2.685L8 7.133l4.755-2.758-4.63-2.685a.248.248 0 0 0-.25 0ZM2.5 5.677v5.372c0 .09.047.171.125.216l4.625 2.683V8.432Zm6.25 8.271 4.625-2.683a.25.25 0 0 0 .125-.216V5.677L8.75 8.432Z"></path> </svg> </template> <template id="credit-card-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-credit-card"> <path d="M10.75 9a.75.75 0 0 0 0 1.5h1.5a.75.75 0 0 0 0-1.5h-1.5Z"></path><path d="M0 3.75C0 2.784.784 2 1.75 2h12.5c.966 0 1.75.784 1.75 1.75v8.5A1.75 1.75 0 0 1 14.25 14H1.75A1.75 1.75 0 0 1 0 12.25ZM14.5 6.5h-13v5.75c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25Zm0-2.75a.25.25 0 0 0-.25-.25H1.75a.25.25 0 0 0-.25.25V5h13Z"></path> </svg> </template> <template id="play-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </template> <template id="gift-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-gift"> <path d="M2 2.75A2.75 2.75 0 0 1 4.75 0c.983 0 1.873.42 2.57 1.232.268.318.497.668.68 1.042.183-.375.411-.725.68-1.044C9.376.42 10.266 0 11.25 0a2.75 2.75 0 0 1 2.45 4h.55c.966 0 1.75.784 1.75 1.75v2c0 .698-.409 1.301-1 1.582v4.918A1.75 1.75 0 0 1 13.25 16H2.75A1.75 1.75 0 0 1 1 14.25V9.332C.409 9.05 0 8.448 0 7.75v-2C0 4.784.784 4 1.75 4h.55c-.192-.375-.3-.8-.3-1.25ZM7.25 9.5H2.5v4.75c0 .138.112.25.25.25h4.5Zm1.5 0v5h4.5a.25.25 0 0 0 .25-.25V9.5Zm0-4V8h5.5a.25.25 0 0 0 .25-.25v-2a.25.25 0 0 0-.25-.25Zm-7 0a.25.25 0 0 0-.25.25v2c0 .138.112.25.25.25h5.5V5.5h-5.5Zm3-4a1.25 1.25 0 0 0 0 2.5h2.309c-.233-.818-.542-1.401-.878-1.793-.43-.502-.915-.707-1.431-.707ZM8.941 4h2.309a1.25 1.25 0 0 0 0-2.5c-.516 0-1 .205-1.43.707-.337.392-.646.975-.879 1.793Z"></path> </svg> </template> <template id="code-square-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code-square"> <path d="M0 1.75C0 .784.784 0 1.75 0h12.5C15.216 0 16 .784 16 1.75v12.5A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25V1.75a.25.25 0 0 0-.25-.25Zm7.47 3.97a.75.75 0 0 1 1.06 0l2 2a.75.75 0 0 1 0 1.06l-2 2a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L10.69 8 9.22 6.53a.75.75 0 0 1 0-1.06ZM6.78 6.53 5.31 8l1.47 1.47a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215l-2-2a.75.75 0 0 1 0-1.06l2-2a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </template> <template id="device-desktop-icon"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-device-desktop"> <path d="M14.25 1c.966 0 1.75.784 1.75 1.75v7.5A1.75 1.75 0 0 1 14.25 12h-3.727c.099 1.041.52 1.872 1.292 2.757A.752.752 0 0 1 11.25 16h-6.5a.75.75 0 0 1-.565-1.243c.772-.885 1.192-1.716 1.292-2.757H1.75A1.75 1.75 0 0 1 0 10.25v-7.5C0 1.784.784 1 1.75 1ZM1.75 2.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25ZM9.018 12H6.982a5.72 5.72 0 0 1-.765 2.5h3.566a5.72 5.72 0 0 1-.765-2.5Z"></path> </svg> </template> <div class="position-relative"> <ul role="listbox" class="ActionListWrap QueryBuilder-ListWrap" aria-label="Suggestions" data-action=" combobox-commit:query-builder#comboboxCommit mousedown:query-builder#resultsMousedown " data-target="query-builder.resultsList" data-persist-list=false id="query-builder-test-results" ></ul> </div> <div class="FormControl-inlineValidation" id="validation-39720ffe-d5d2-45b7-b2de-33a99384b135" hidden="hidden"> <span class="FormControl-inlineValidation--visual"> <svg aria-hidden="true" height="12" viewBox="0 0 12 12" version="1.1" width="12" data-view-component="true" class="octicon octicon-alert-fill"> <path d="M4.855.708c.5-.896 1.79-.896 2.29 0l4.675 8.351a1.312 1.312 0 0 1-1.146 1.954H1.33A1.313 1.313 0 0 1 .183 9.058ZM7 7V3H5v4Zm-1 3a1 1 0 1 0 0-2 1 1 0 0 0 0 2Z"></path> </svg> </span> <span></span> </div> </div> <div data-target="query-builder.screenReaderFeedback" aria-live="polite" aria-atomic="true" class="sr-only"></div> </query-builder></form> <div class="d-flex flex-row color-fg-muted px-3 text-small color-bg-default search-feedback-prompt"> <a target="_blank" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax" data-view-component="true" class="Link color-fg-accent text-normal ml-2">Search syntax tips</a> <div class="d-flex flex-1"></div> </div> </div> </div> </div> </modal-dialog></div> </div> <div data-action="click:qbsearch-input#retract" class="dark-backdrop position-fixed" hidden data-target="qbsearch-input.darkBackdrop"></div> <div class="color-fg-default"> <dialog-helper> <dialog data-target="qbsearch-input.feedbackDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="feedback-dialog" aria-modal="true" aria-labelledby="feedback-dialog-title" aria-describedby="feedback-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="feedback-dialog-title"> Provide feedback </h1> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="feedback-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="feedback-dialog-title"> <div data-view-component="true" class="Overlay-body"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="code-search-feedback-form" data-turbo="false" action="/search/feedback" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="sWNY0PDJYdYLlWLeA9/yuUP5XKl5TBg5wSCAG0P6Kg/IdymCh1lLbzFSpXtkAbsvQfeq0Wqa3psmEVZ5La3FeA==" /> <p>We read every piece of feedback, and take your input very seriously.</p> <textarea name="feedback" class="form-control width-full mb-2" style="height: 120px" id="feedback"></textarea> <input name="include_email" id="include_email" aria-label="Include my email address so I can be contacted" class="form-control mr-2" type="checkbox"> <label for="include_email" style="font-weight: normal">Include my email address so I can be contacted</label> </form></div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd"> <button data-close-dialog-id="feedback-dialog" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="code-search-feedback-form" data-action="click:qbsearch-input#submitFeedback" type="submit" data-view-component="true" class="btn-primary btn"> Submit feedback </button> </div> </dialog></dialog-helper> <custom-scopes data-target="qbsearch-input.customScopesManager"> <dialog-helper> <dialog data-target="custom-scopes.customScopesModalDialog" data-action="close:qbsearch-input#handleDialogClose cancel:qbsearch-input#handleDialogClose" id="custom-scopes-dialog" aria-modal="true" aria-labelledby="custom-scopes-dialog-title" aria-describedby="custom-scopes-dialog-description" data-view-component="true" class="Overlay Overlay-whenNarrow Overlay--size-medium Overlay--motion-scaleFade Overlay--disableScroll"> <div data-view-component="true" class="Overlay-header Overlay-header--divided"> <div class="Overlay-headerContentWrap"> <div class="Overlay-titleWrap"> <h1 class="Overlay-title " id="custom-scopes-dialog-title"> Saved searches </h1> <h2 id="custom-scopes-dialog-description" class="Overlay-description">Use saved searches to filter your results more quickly</h2> </div> <div class="Overlay-actionWrap"> <button data-close-dialog-id="custom-scopes-dialog" aria-label="Close" type="button" data-view-component="true" class="close-button Overlay-closeButton"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg></button> </div> </div> </div> <scrollable-region data-labelled-by="custom-scopes-dialog-title"> <div data-view-component="true" class="Overlay-body"> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <div hidden class="create-custom-scope-form" data-target="custom-scopes.createCustomScopeForm"> <!-- '"` --><!-- </textarea></xmp> --></option></form><form id="custom-scopes-dialog-form" data-turbo="false" action="/search/custom_scopes" accept-charset="UTF-8" method="post"><input type="hidden" data-csrf="true" name="authenticity_token" value="gkf7UjoAyk28tDtR/Rc79uKmkDhHBa76yMeuAS+CoI4c26XBnqWJJbVMVVN0n4u6wVIzfTvWUFKIOyOHbTGYBA==" /> <div data-target="custom-scopes.customScopesModalDialogFlash"></div> <input type="hidden" id="custom_scope_id" name="custom_scope_id" data-target="custom-scopes.customScopesIdField"> <div class="form-group"> <label for="custom_scope_name">Name</label> <auto-check src="/search/custom_scopes/check_name" required only-validate-on-blur="false"> <input type="text" name="custom_scope_name" id="custom_scope_name" data-target="custom-scopes.customScopesNameField" class="form-control" autocomplete="off" placeholder="github-ruby" required maxlength="50"> <input type="hidden" data-csrf="true" value="pO9DgB7PVXiPE7Gk7e6VgXIILFUmJ1uDi+kih7fq8cGt6alxu5I7XE6e0W4CoG/bCpwgfo3EUQGHWMuivqtDIg==" /> </auto-check> </div> <div class="form-group"> <label for="custom_scope_query">Query</label> <input type="text" name="custom_scope_query" id="custom_scope_query" data-target="custom-scopes.customScopesQueryField" class="form-control" autocomplete="off" placeholder="(repo:mona/a OR repo:mona/b) AND lang:python" required maxlength="500"> </div> <p class="text-small color-fg-muted"> To see all available qualifiers, see our <a class="Link--inTextBlock" href="https://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax">documentation</a>. </p> </form> </div> <div data-target="custom-scopes.manageCustomScopesForm"> <div data-target="custom-scopes.list"></div> </div> </div> </scrollable-region> <div data-view-component="true" class="Overlay-footer Overlay-footer--alignEnd Overlay-footer--divided"> <button data-action="click:custom-scopes#customScopesCancel" type="button" data-view-component="true" class="btn"> Cancel </button> <button form="custom-scopes-dialog-form" data-action="click:custom-scopes#customScopesSubmit" data-target="custom-scopes.customScopesSubmitButton" type="submit" data-view-component="true" class="btn-primary btn"> Create saved search </button> </div> </dialog></dialog-helper> </custom-scopes> </div> </qbsearch-input> <div class="position-relative HeaderMenu-link-wrap d-lg-inline-block"> <a href="/login?return_to=https%3A%2F%2Fgithub.com%2Faimeos%2Fmap" class="HeaderMenu-link HeaderMenu-link--sign-in HeaderMenu-button flex-shrink-0 no-underline d-none d-lg-inline-flex border border-lg-0 rounded rounded-lg-0 px-2 py-1" style="margin-left: 12px;" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/aimeos/map&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c6cee6e2730db5575fa268abe1d1b03c9368e793e5132b520333414b45f7e8c5" data-analytics-event="{&quot;category&quot;:&quot;Marketing nav&quot;,&quot;action&quot;:&quot;click to go to homepage&quot;,&quot;label&quot;:&quot;ref_page:Marketing;ref_cta:Sign in;ref_loc:Header&quot;}" > Sign in </a> </div> <a href="/signup?ref_cta=Sign+up&amp;ref_loc=header+logged+out&amp;ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E&amp;source=header-repo&amp;source_repo=aimeos%2Fmap" class="HeaderMenu-link HeaderMenu-link--sign-up HeaderMenu-button flex-shrink-0 d-flex d-lg-inline-flex no-underline border color-border-default rounded px-2 py-1" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;site header menu&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;SIGN_UP&quot;,&quot;originating_url&quot;:&quot;https://github.com/aimeos/map&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="c6cee6e2730db5575fa268abe1d1b03c9368e793e5132b520333414b45f7e8c5" data-analytics-event="{&quot;category&quot;:&quot;Sign up&quot;,&quot;action&quot;:&quot;click to sign up for account&quot;,&quot;label&quot;:&quot;ref_page:/&lt;user-name&gt;/&lt;repo-name&gt;;ref_cta:Sign up;ref_loc:header logged out&quot;}" > Sign up </a> <button type="button" class="sr-only js-header-menu-focus-trap d-block d-lg-none">Reseting focus</button> </div> </div> </div> </div> </header> <div hidden="hidden" data-view-component="true" class="js-stale-session-flash stale-session-flash flash flash-warn flash-full"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span class="js-stale-session-flash-signed-in" hidden>You signed in with another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-signed-out" hidden>You signed out in another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <span class="js-stale-session-flash-switched" hidden>You switched accounts on another tab or window. <a class="Link--inTextBlock" href="">Reload</a> to refresh your session.</span> <button id="icon-button-9f3d4ff6-0265-4ca0-b7a4-78c95f286ed2" aria-labelledby="tooltip-679dcac6-5221-464b-8ab1-49b7070ddbc9" type="button" data-view-component="true" class="Button Button--iconOnly Button--invisible Button--medium flash-close js-flash-close"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x Button-visual"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button><tool-tip id="tooltip-679dcac6-5221-464b-8ab1-49b7070ddbc9" for="icon-button-9f3d4ff6-0265-4ca0-b7a4-78c95f286ed2" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Dismiss alert</tool-tip> </div> </div> <div id="start-of-content" class="show-on-focus"></div> <div id="js-flash-container" class="flash-container" data-turbo-replace> <template class="js-flash-template"> <div class="flash flash-full {{ className }}"> <div > <button autofocus class="flash-close js-flash-close" type="button" aria-label="Dismiss this message"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div aria-atomic="true" role="alert" class="js-flash-alert"> <div>{{ message }}</div> </div> </div> </div> </template> </div> <div class="application-main " data-commit-hovercards-enabled data-discussion-hovercards-enabled data-issue-and-pr-hovercards-enabled data-project-hovercards-enabled > <div itemscope itemtype="http://schema.org/SoftwareSourceCode" class=""> <main id="js-repo-pjax-container" > <div id="repository-container-header" class="pt-3 hide-full-screen" style="background-color: var(--page-header-bgColor, var(--color-page-header-bg));" data-turbo-replace> <div class="d-flex flex-nowrap flex-justify-end mb-3 px-3 px-lg-5" style="gap: 1rem;"> <div class="flex-auto min-width-0 width-fit"> <div class=" d-flex flex-wrap flex-items-center wb-break-word f3 text-normal"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo color-fg-muted mr-2"> <path d="M2 2.5A2.5 2.5 0 0 1 4.5 0h8.75a.75.75 0 0 1 .75.75v12.5a.75.75 0 0 1-.75.75h-2.5a.75.75 0 0 1 0-1.5h1.75v-2h-8a1 1 0 0 0-.714 1.7.75.75 0 1 1-1.072 1.05A2.495 2.495 0 0 1 2 11.5Zm10.5-1h-8a1 1 0 0 0-1 1v6.708A2.486 2.486 0 0 1 4.5 9h8ZM5 12.25a.25.25 0 0 1 .25-.25h3.5a.25.25 0 0 1 .25.25v3.25a.25.25 0 0 1-.4.2l-1.45-1.087a.249.249 0 0 0-.3 0L5.4 15.7a.25.25 0 0 1-.4-.2Z"></path> </svg> <span class="author flex-self-stretch" itemprop="author"> <a class="url fn" rel="author" data-hovercard-type="user" data-hovercard-url="/users/aimeos/hovercard" data-octo-click="hovercard-link-click" data-octo-dimensions="link_type:self" href="/aimeos"> aimeos </a> </span> <span class="mx-1 flex-self-stretch color-fg-muted">/</span> <strong itemprop="name" class="mr-2 flex-self-stretch"> <a data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/aimeos/map">map</a> </strong> <span></span><span class="Label Label--secondary v-align-middle mr-1">Public</span> </div> </div> <div id="repository-details-container" class="flex-shrink-0" data-turbo-replace style="max-width: 70%;"> <ul class="pagehead-actions flex-shrink-0 d-none d-md-inline" style="padding: 2px 0;"> <li> <a href="/login?return_to=%2Faimeos%2Fmap" rel="nofollow" id="repository-details-watch-button" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/aimeos/map&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="bab9fba24d19cce08faf20ea774d8500a023551ff1aacfb6e6362b5d8f035772" aria-label="You must be signed in to change notification settings" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2"> <path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z"></path> </svg>Notifications </a> <tool-tip id="tooltip-372636e9-ddec-4ba2-a007-87a96753cfef" for="repository-details-watch-button" popover="manual" data-direction="s" data-type="description" data-view-component="true" class="sr-only position-absolute">You must be signed in to change notification settings</tool-tip> </li> <li> <a icon="repo-forked" id="fork-button" href="/login?return_to=%2Faimeos%2Fmap" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;repo details fork button&quot;,&quot;repository_id&quot;:222356890,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/aimeos/map&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="46c9155d555650e097fb76d245d32a92bab22c532c20f889e4bbdbe71b39c3ec" data-view-component="true" class="btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2"> <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path> </svg>Fork <span id="repo-network-counter" data-pjax-replace="true" data-turbo-replace="true" title="17" data-view-component="true" class="Counter">17</span> </a> </li> <li> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Faimeos%2Fmap" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:222356890,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/aimeos/map&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="800c7f07fbf1f8a395fd6c91894c93833d7fc1d7c6d9be11ec1465060f1a0abe" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> <span id="repo-stars-counter-star" aria-label="3555 users starred this repository" data-singular-suffix="user starred this repository" data-plural-suffix="users starred this repository" data-turbo-replace="true" title="3,555" data-view-component="true" class="Counter js-social-count">3.6k</span> </a></div> </li> </ul> </div> </div> <div id="responsive-meta-container" data-turbo-replace> <div class="d-block d-md-none mb-2 px-3 px-md-4 px-lg-5"> <p class="f4 mb-3 "> PHP arrays and collections made easy </p> <div class="mb-2 d-flex flex-items-center Link--secondary"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link flex-shrink-0 mr-2"> <path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path> </svg> <span class="flex-auto min-width-0 css-truncate css-truncate-target width-fit"> <a title="http://php-map.org" role="link" target="_blank" class="text-bold" rel="noopener noreferrer" href="http://php-map.org">php-map.org</a> </span> </div> <h3 class="sr-only">License</h3> <div class="mb-2"> <a href="/aimeos/map/blob/3.x/LICENSE" class="Link--muted" data-analytics-event="{&quot;category&quot;:&quot;Repository Overview&quot;,&quot;action&quot;:&quot;click&quot;,&quot;label&quot;:&quot;location:sidebar;file:license&quot;}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-law mr-2"> <path d="M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z"></path> </svg> MIT license </a> </div> <div class="mb-3"> <a class="Link--secondary no-underline mr-3" href="/aimeos/map/stargazers"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star mr-1"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg> <span class="text-bold">3.6k</span> stars </a> <a class="Link--secondary no-underline mr-3" href="/aimeos/map/forks"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-1"> <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path> </svg> <span class="text-bold">17</span> forks </a> <a class="Link--secondary no-underline mr-3 d-inline-block" href="/aimeos/map/branches"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-branch mr-1"> <path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path> </svg> <span>Branches</span> </a> <a class="Link--secondary no-underline d-inline-block" href="/aimeos/map/tags"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag mr-1"> <path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path> </svg> <span>Tags</span> </a> <a class="Link--secondary no-underline d-inline-block" href="/aimeos/map/activity"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pulse mr-1"> <path d="M6 2c.306 0 .582.187.696.471L10 10.731l1.304-3.26A.751.751 0 0 1 12 7h3.25a.75.75 0 0 1 0 1.5h-2.742l-1.812 4.528a.751.751 0 0 1-1.392 0L6 4.77 4.696 8.03A.75.75 0 0 1 4 8.5H.75a.75.75 0 0 1 0-1.5h2.742l1.812-4.529A.751.751 0 0 1 6 2Z"></path> </svg> <span>Activity</span> </a> </div> <div class="d-flex flex-wrap gap-2"> <div class="flex-1"> <div data-view-component="true" class="BtnGroup d-flex"> <a href="/login?return_to=%2Faimeos%2Fmap" rel="nofollow" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;star button&quot;,&quot;repository_id&quot;:222356890,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/aimeos/map&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="800c7f07fbf1f8a395fd6c91894c93833d7fc1d7c6d9be11ec1465060f1a0abe" aria-label="You must be signed in to star a repository" data-view-component="true" class="tooltipped tooltipped-sw btn-sm btn btn-block"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star v-align-text-bottom d-inline-block mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg><span data-view-component="true" class="d-inline"> Star </span> </a></div> </div> <div class="flex-1"> <a href="/login?return_to=%2Faimeos%2Fmap" rel="nofollow" id="files-overview-watch-button" data-hydro-click="{&quot;event_type&quot;:&quot;authentication.click&quot;,&quot;payload&quot;:{&quot;location_in_page&quot;:&quot;notification subscription menu watch&quot;,&quot;repository_id&quot;:null,&quot;auth_type&quot;:&quot;LOG_IN&quot;,&quot;originating_url&quot;:&quot;https://github.com/aimeos/map&quot;,&quot;user_id&quot;:null}}" data-hydro-click-hmac="bab9fba24d19cce08faf20ea774d8500a023551ff1aacfb6e6362b5d8f035772" aria-label="You must be signed in to change notification settings" data-view-component="true" class="btn-sm btn btn-block"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-bell mr-2"> <path d="M8 16a2 2 0 0 0 1.985-1.75c.017-.137-.097-.25-.235-.25h-3.5c-.138 0-.252.113-.235.25A2 2 0 0 0 8 16ZM3 5a5 5 0 0 1 10 0v2.947c0 .05.015.098.042.139l1.703 2.555A1.519 1.519 0 0 1 13.482 13H2.518a1.516 1.516 0 0 1-1.263-2.36l1.703-2.554A.255.255 0 0 0 3 7.947Zm5-3.5A3.5 3.5 0 0 0 4.5 5v2.947c0 .346-.102.683-.294.97l-1.703 2.556a.017.017 0 0 0-.003.01l.001.006c0 .002.002.004.004.006l.006.004.007.001h10.964l.007-.001.006-.004.004-.006.001-.007a.017.017 0 0 0-.003-.01l-1.703-2.554a1.745 1.745 0 0 1-.294-.97V5A3.5 3.5 0 0 0 8 1.5Z"></path> </svg>Notifications </a> <tool-tip id="tooltip-e2369de9-8f4c-49fd-96ad-38011639def1" for="files-overview-watch-button" popover="manual" data-direction="s" data-type="description" data-view-component="true" class="sr-only position-absolute">You must be signed in to change notification settings</tool-tip> </div> <span> </span> </div> </div> </div> <nav data-pjax="#js-repo-pjax-container" aria-label="Repository" data-view-component="true" class="js-repo-nav js-sidenav-container-pjax js-responsive-underlinenav overflow-hidden UnderlineNav px-3 px-md-4 px-lg-5"> <ul data-view-component="true" class="UnderlineNav-body list-style-none"> <li data-view-component="true" class="d-inline-flex"> <a id="code-tab" href="/aimeos/map" data-tab-item="i0code-tab" data-selected-links="repo_source repo_downloads repo_commits repo_releases repo_tags repo_branches repo_packages repo_deployments repo_attestations /aimeos/map" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g c" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Code&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" aria-current="page" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item selected"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code UnderlineNav-octicon d-none d-sm-inline"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> <span data-content="Code">Code</span> <span id="code-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="issues-tab" href="/aimeos/map/issues" data-tab-item="i1issues-tab" data-selected-links="repo_issues repo_labels repo_milestones /aimeos/map/issues" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g i" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Issues&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened UnderlineNav-octicon d-none d-sm-inline"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> <span data-content="Issues">Issues</span> <span id="issues-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="1" data-view-component="true" class="Counter">1</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="pull-requests-tab" href="/aimeos/map/pulls" data-tab-item="i2pull-requests-tab" data-selected-links="repo_pulls checks /aimeos/map/pulls" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g p" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Pull requests&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> <span data-content="Pull requests">Pull requests</span> <span id="pull-requests-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="0" hidden="hidden" data-view-component="true" class="Counter">0</span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="actions-tab" href="/aimeos/map/actions" data-tab-item="i3actions-tab" data-selected-links="repo_actions /aimeos/map/actions" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g a" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Actions&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play UnderlineNav-octicon d-none d-sm-inline"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> <span data-content="Actions">Actions</span> <span id="actions-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="security-tab" href="/aimeos/map/security" data-tab-item="i4security-tab" data-selected-links="security overview alerts policy token_scanning code_scanning /aimeos/map/security" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-hotkey="g s" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Security&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield UnderlineNav-octicon d-none d-sm-inline"> <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <span data-content="Security">Security</span> <include-fragment src="/aimeos/map/security/overall-count" accept="text/fragment+html"></include-fragment> </a></li> <li data-view-component="true" class="d-inline-flex"> <a id="insights-tab" href="/aimeos/map/pulse" data-tab-item="i5insights-tab" data-selected-links="repo_graphs repo_contributors dependency_graph dependabot_updates pulse people community /aimeos/map/pulse" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" data-analytics-event="{&quot;category&quot;:&quot;Underline navbar&quot;,&quot;action&quot;:&quot;Click tab&quot;,&quot;label&quot;:&quot;Insights&quot;,&quot;target&quot;:&quot;UNDERLINE_NAV.TAB&quot;}" data-view-component="true" class="UnderlineNav-item no-wrap js-responsive-underlinenav-item js-selected-navigation-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph UnderlineNav-octicon d-none d-sm-inline"> <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> <span data-content="Insights">Insights</span> <span id="insights-repo-tab-count" data-pjax-replace="" data-turbo-replace="" title="Not available" data-view-component="true" class="Counter"></span> </a></li> </ul> <div style="visibility:hidden;" data-view-component="true" class="UnderlineNav-actions js-responsive-underlinenav-overflow position-absolute pr-3 pr-md-4 pr-lg-5 right-0"> <action-menu data-select-variant="none" data-view-component="true"> <focus-group direction="vertical" mnemonics retain> <button id="action-menu-3a4ccfcd-fe4a-4e72-a147-dc279d7812fe-button" popovertarget="action-menu-3a4ccfcd-fe4a-4e72-a147-dc279d7812fe-overlay" aria-controls="action-menu-3a4ccfcd-fe4a-4e72-a147-dc279d7812fe-list" aria-haspopup="true" aria-labelledby="tooltip-3a50f09d-1723-43df-8667-84aa055c02bc" type="button" data-view-component="true" class="Button Button--iconOnly Button--secondary Button--medium UnderlineNav-item"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-kebab-horizontal Button-visual"> <path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path> </svg> </button><tool-tip id="tooltip-3a50f09d-1723-43df-8667-84aa055c02bc" for="action-menu-3a4ccfcd-fe4a-4e72-a147-dc279d7812fe-button" popover="manual" data-direction="s" data-type="label" data-view-component="true" class="sr-only position-absolute">Additional navigation options</tool-tip> <anchored-position data-target="action-menu.overlay" id="action-menu-3a4ccfcd-fe4a-4e72-a147-dc279d7812fe-overlay" anchor="action-menu-3a4ccfcd-fe4a-4e72-a147-dc279d7812fe-button" align="start" side="outside-bottom" anchor-offset="normal" popover="auto" data-view-component="true"> <div data-view-component="true" class="Overlay Overlay--size-auto"> <div data-view-component="true" class="Overlay-body Overlay-body--paddingNone"> <action-list> <div data-view-component="true"> <ul aria-labelledby="action-menu-3a4ccfcd-fe4a-4e72-a147-dc279d7812fe-button" id="action-menu-3a4ccfcd-fe4a-4e72-a147-dc279d7812fe-list" role="menu" data-view-component="true" class="ActionListWrap--inset ActionListWrap"> <li hidden="hidden" data-menu-item="i0code-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-57872f4a-6b93-4c6a-b44a-10195d7fea8b" href="/aimeos/map" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-code"> <path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Code </span> </a> </li> <li hidden="hidden" data-menu-item="i1issues-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-a5a709c4-be0d-424b-9db2-750fc4e7996b" href="/aimeos/map/issues" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-issue-opened"> <path d="M8 9.5a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path><path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Issues </span> </a> </li> <li hidden="hidden" data-menu-item="i2pull-requests-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-162c8f2a-f0ac-4df6-91be-e661765ccfa0" href="/aimeos/map/pulls" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-git-pull-request"> <path d="M1.5 3.25a2.25 2.25 0 1 1 3 2.122v5.256a2.251 2.251 0 1 1-1.5 0V5.372A2.25 2.25 0 0 1 1.5 3.25Zm5.677-.177L9.573.677A.25.25 0 0 1 10 .854V2.5h1A2.5 2.5 0 0 1 13.5 5v5.628a2.251 2.251 0 1 1-1.5 0V5a1 1 0 0 0-1-1h-1v1.646a.25.25 0 0 1-.427.177L7.177 3.427a.25.25 0 0 1 0-.354ZM3.75 2.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm0 9.5a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Zm8.25.75a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Pull requests </span> </a> </li> <li hidden="hidden" data-menu-item="i3actions-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-5a115bbb-0408-4457-bc8b-58bbc1d609dd" href="/aimeos/map/actions" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-play"> <path d="M8 0a8 8 0 1 1 0 16A8 8 0 0 1 8 0ZM1.5 8a6.5 6.5 0 1 0 13 0 6.5 6.5 0 0 0-13 0Zm4.879-2.773 4.264 2.559a.25.25 0 0 1 0 .428l-4.264 2.559A.25.25 0 0 1 6 10.559V5.442a.25.25 0 0 1 .379-.215Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Actions </span> </a> </li> <li hidden="hidden" data-menu-item="i4security-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-89d4223e-4266-4ceb-a7ae-1fb2152b9834" href="/aimeos/map/security" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-shield"> <path d="M7.467.133a1.748 1.748 0 0 1 1.066 0l5.25 1.68A1.75 1.75 0 0 1 15 3.48V7c0 1.566-.32 3.182-1.303 4.682-.983 1.498-2.585 2.813-5.032 3.855a1.697 1.697 0 0 1-1.33 0c-2.447-1.042-4.049-2.357-5.032-3.855C1.32 10.182 1 8.566 1 7V3.48a1.75 1.75 0 0 1 1.217-1.667Zm.61 1.429a.25.25 0 0 0-.153 0l-5.25 1.68a.25.25 0 0 0-.174.238V7c0 1.358.275 2.666 1.057 3.86.784 1.194 2.121 2.34 4.366 3.297a.196.196 0 0 0 .154 0c2.245-.956 3.582-2.104 4.366-3.298C13.225 9.666 13.5 8.36 13.5 7V3.48a.251.251 0 0 0-.174-.237l-5.25-1.68ZM8.75 4.75v3a.75.75 0 0 1-1.5 0v-3a.75.75 0 0 1 1.5 0ZM9 10.5a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Security </span> </a> </li> <li hidden="hidden" data-menu-item="i5insights-tab" data-targets="action-list.items" role="none" data-view-component="true" class="ActionListItem"> <a tabindex="-1" id="item-b11df233-479a-47ee-b628-abe8574e2891" href="/aimeos/map/pulse" role="menuitem" data-view-component="true" class="ActionListContent ActionListContent--visual16"> <span class="ActionListItem-visual ActionListItem-visual--leading"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-graph"> <path d="M1.5 1.75V13.5h13.75a.75.75 0 0 1 0 1.5H.75a.75.75 0 0 1-.75-.75V1.75a.75.75 0 0 1 1.5 0Zm14.28 2.53-5.25 5.25a.75.75 0 0 1-1.06 0L7 7.06 4.28 9.78a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042l3.25-3.25a.75.75 0 0 1 1.06 0L10 7.94l4.72-4.72a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042Z"></path> </svg> </span> <span data-view-component="true" class="ActionListItem-label"> Insights </span> </a> </li> </ul> </div></action-list> </div> </div></anchored-position> </focus-group> </action-menu></div> </nav> </div> <turbo-frame id="repo-content-turbo-frame" target="_top" data-turbo-action="advance" class=""> <div id="repo-content-pjax-container" class="repository-content " > <h1 class='sr-only'>aimeos/map</h1> <div class="clearfix container-xl px-md-4 px-lg-5 px-3"> <div> <div style="max-width: 100%" data-view-component="true" class="Layout Layout--flowRow-until-md react-repos-overview-margin Layout--sidebarPosition-end Layout--sidebarPosition-flowRow-end"> <div data-view-component="true" class="Layout-main"> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_dompurify_dist_purify_es_mjs-dd1d3ea6a436.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/vendors-node_modules_tanstack_query-core_build_modern_queryObserver_js-node_modules_tanstack_-defd52-843b41414e0e.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_aria-live_aria-live_ts-ui_packages_history_history_ts-ui_packages_promise-with-re-01dc80-b13b6c1d97b0.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_paths_index_ts-04e7ec2d63d9.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_ref-selector_RefSelector_tsx-7496afc3784d.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_commit-attribution_index_ts-ui_packages_commit-checks-status_index_ts-ui_packages-762eaa-bac5b6fc3f70.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/ui_packages_code-view-shared_hooks_use-canonical-object_ts-ui_packages_code-view-shared_hooks-c2dbff-923a12b3d018.js"></script> <script crossorigin="anonymous" defer="defer" type="application/javascript" src="https://github.githubassets.com/assets/repos-overview-ee8ba0cef14d.js"></script> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/primer-react.a490b7c9fa319e5cb069.module.css" /> <link crossorigin="anonymous" media="all" rel="stylesheet" href="https://github.githubassets.com/assets/repos-overview.0ee7cac3ab511a65d9f9.module.css" /> <react-partial partial-name="repos-overview" data-ssr="true" data-attempted-ssr="true" > <script type="application/json" data-target="react-partial.embeddedData">{"props":{"initialPayload":{"allShortcutsEnabled":false,"path":"/","repo":{"id":222356890,"defaultBranch":"3.x","name":"map","ownerLogin":"aimeos","currentUserCanPush":false,"isFork":false,"isEmpty":false,"createdAt":"2019-11-18T03:35:21.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/8647429?v=4","public":true,"private":false,"isOrgOwned":false},"currentUser":null,"refInfo":{"name":"3.x","listCacheKey":"v0:1741166401.0","canEdit":false,"refType":"branch","currentOid":"6d7c8022363aff11211856f540023428d33e0adf"},"tree":{"items":[{"name":".github/workflows","path":".github/workflows","contentType":"directory","hasSimplifiedPath":true},{"name":"_layouts","path":"_layouts","contentType":"directory"},{"name":"assets","path":"assets","contentType":"directory"},{"name":"src","path":"src","contentType":"directory"},{"name":"tests","path":"tests","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":"CNAME","path":"CNAME","contentType":"file"},{"name":"LICENSE","path":"LICENSE","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"_config.yml","path":"_config.yml","contentType":"file"},{"name":"composer.json","path":"composer.json","contentType":"file"},{"name":"phpunit.xml","path":"phpunit.xml","contentType":"file"}],"templateDirectorySuggestionUrl":null,"readme":null,"totalCount":12,"showBranchInfobar":false},"fileTree":null,"fileTreeProcessingTime":null,"foldersToFetch":[],"treeExpanded":false,"symbolsExpanded":false,"isOverview":true,"overview":{"banners":{"shouldRecommendReadme":false,"isPersonalRepo":false,"showUseActionBanner":false,"actionSlug":null,"actionId":null,"showProtectBranchBanner":false,"publishBannersInfo":{"dismissActionNoticePath":"/settings/dismiss-notice/publish_action_from_repo","releasePath":"/aimeos/map/releases/new?marketplace=true","showPublishActionBanner":false},"interactionLimitBanner":null,"showInvitationBanner":false,"inviterName":null,"actionsMigrationBannerInfo":{"releaseTags":[],"showImmutableActionsMigrationBanner":false,"initialMigrationStatus":null}},"codeButton":{"contactPath":"/contact","isEnterprise":false,"local":{"protocolInfo":{"httpAvailable":true,"sshAvailable":null,"httpUrl":"https://github.com/aimeos/map.git","showCloneWarning":null,"sshUrl":null,"sshCertificatesRequired":null,"sshCertificatesAvailable":null,"ghCliUrl":"gh repo clone aimeos/map","defaultProtocol":"http","newSshKeyUrl":"/settings/ssh/new","setProtocolPath":"/users/set_protocol"},"platformInfo":{"cloneUrl":"https://desktop.github.com","showVisualStudioCloneButton":false,"visualStudioCloneUrl":"https://windows.github.com","showXcodeCloneButton":false,"xcodeCloneUrl":"xcode://clone?repo=https%3A%2F%2Fgithub.com%2Faimeos%2Fmap","zipballUrl":"/aimeos/map/archive/refs/heads/3.x.zip"}},"newCodespacePath":"/codespaces/new?hide_repo_select=true\u0026repo=222356890"},"popovers":{"rename":null,"renamedParentRepo":null},"commitCount":"495","overviewFiles":[{"displayName":"README.md","repoName":"map","refName":"3.x","path":"README.md","preferredFileType":"readme","tabName":"README","richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cp dir=\"auto\"\u003e\u003ca href=\"https://github.com/aimeos/map/actions\"\u003e\u003cimg src=\"https://github.com/aimeos/map/actions/workflows/php.yml/badge.svg\" alt=\"Build Status\" height=\"20\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003ca href=\"https://coveralls.io/github/aimeos/map\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/0bd7d25e03645c91e5038330cc54b93c2792ed933392484cba155ea4331b3dac/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f61696d656f732f6d61702f62616467652e737667\" alt=\"Coverage Status\" height=\"20\" data-canonical-src=\"https://coveralls.io/repos/github/aimeos/map/badge.svg\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/aimeos/map\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/cfe578df661df520f2816b372189620c4d5242cddfc1312c97beea990dfaa637/68747470733a2f2f706f7365722e707567782e6f72672f61696d656f732f6d61702f6c6963656e73652e737667\" alt=\"License\" height=\"20\" data-canonical-src=\"https://poser.pugx.org/aimeos/map/license.svg\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/aimeos/map\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/90895f67fc6c8576f2791057e7b8c398b5ef5868f21c82c983ad442be1cc963b/68747470733a2f2f706f7365722e707567782e6f72672f61696d656f732f6d61702f762f737461626c65\" alt=\"Latest Stable Version\" height=\"20\" data-canonical-src=\"https://poser.pugx.org/aimeos/map/v/stable\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/aimeos/map\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/bef9c9f6fd47517903f7091e0220d7ddf617a05f4a805315803c3bfaa2807bab/68747470733a2f2f62616467656e2e6e65742f6769746875622f73746172732f61696d656f732f6d6170\" alt=\"Stars\" height=\"20\" data-canonical-src=\"https://badgen.net/github/stars/aimeos/map\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\n\u003ca href=\"https://packagist.org/packages/aimeos/map\" rel=\"nofollow\"\u003e\u003cimg src=\"https://camo.githubusercontent.com/59f33971ccb7383a48e8c5475e61a419f7b45170eb34624822d22ec06396a8c3/68747470733a2f2f706f7365722e707567782e6f72672f61696d656f732f6d61702f646f776e6c6f616473\" alt=\"Downloads\" height=\"20\" data-canonical-src=\"https://poser.pugx.org/aimeos/map/downloads\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch1 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ePHP arrays and collections made easy\u003c/h1\u003e\u003ca id=\"user-content-php-arrays-and-collections-made-easy\" class=\"anchor\" aria-label=\"Permalink: PHP arrays and collections made easy\" href=\"#php-arrays-and-collections-made-easy\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eEasy and elegant handling of PHP arrays by using an array-like collection object\nas offered by jQuery and Laravel Collections.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-source-shell notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"composer req aimeos/map\"\u003e\u003cpre\u003ecomposer req aimeos/map\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSupported PHP versions:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003ePHP 7.1+\u003c/li\u003e\n\u003cli\u003ePHP 8+\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eTable of contents\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#why-php-map\"\u003eWhy PHP Map\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#methods\"\u003eList of methods\u003c/a\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#create\"\u003eCreate\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#access\"\u003eAccess\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#add\"\u003eAdd\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#aggregate\"\u003eAggregate\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#debug\"\u003eDebug\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#order-by\"\u003eOrder\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#shorten\"\u003eShorten\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#test\"\u003eTest\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#mutate\"\u003eMutate\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#misc\"\u003eMisc\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#method-documentation\"\u003eDocumentation\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#custom-methods\"\u003eCustom methods\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#performance\"\u003ePerformance\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#upgrade-guide\"\u003eUpgrade guide\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eWhy PHP Map\u003c/h2\u003e\u003ca id=\"user-content-why-php-map\" class=\"anchor\" aria-label=\"Permalink: Why PHP Map\" href=\"#why-php-map\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eInstead of:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$list = [['id' =\u0026gt; 'one', 'value' =\u0026gt; 'value1'], ['id' =\u0026gt; 'two', 'value' =\u0026gt; 'value2'], null];\n$list[] = ['id' =\u0026gt; 'three', 'value' =\u0026gt; 'value3']; // add element\nunset( $list[0] ); // remove element\n$list = array_filter( $list ); // remove empty values\nsort( $list ); // sort elements\n$pairs = array_column( $list, 'value', 'id' ); // create ['three' =\u0026gt; 'value3']\n$value = reset( $pairs ) ?: null; // return first value\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e = [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eone\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue1\u003c/span\u003e'\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etwo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue2\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e];\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e[] = [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ethree\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue3\u003c/span\u003e'\u003c/span\u003e]; \u003cspan class=\"pl-c\"\u003e// add element\u003c/span\u003e\nunset( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e[\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e] ); \u003cspan class=\"pl-c\"\u003e// remove element\u003c/span\u003e\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e = \u003cspan class=\"pl-en\"\u003earray_filter\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e ); \u003cspan class=\"pl-c\"\u003e// remove empty values\u003c/span\u003e\n\u003cspan class=\"pl-en\"\u003esort\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e ); \u003cspan class=\"pl-c\"\u003e// sort elements\u003c/span\u003e\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003epairs\u003c/span\u003e = \u003cspan class=\"pl-en\"\u003earray_column\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e ); \u003cspan class=\"pl-c\"\u003e// create ['three' =\u0026gt; 'value3']\u003c/span\u003e\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e = \u003cspan class=\"pl-en\"\u003ereset\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003epairs\u003c/span\u003e ) ?: \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e; \u003cspan class=\"pl-c\"\u003e// return first value\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eOnly use:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$list = [['id' =\u0026gt; 'one', 'value' =\u0026gt; 'value1'], ['id' =\u0026gt; 'two', 'value' =\u0026gt; 'value2'], null];\n$value = map( $list ) // create Map\n -\u0026gt;push( ['id' =\u0026gt; 'three', 'value' =\u0026gt; 'value3'] ) // add element\n -\u0026gt;remove( 0 ) // remove element\n -\u0026gt;filter() // remove empty values\n -\u0026gt;sort() // sort elements\n -\u0026gt;col( 'value', 'id' ) // create ['three' =\u0026gt; 'value3']\n -\u0026gt;first(); // return first value\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e = [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eone\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue1\u003c/span\u003e'\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etwo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue2\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e];\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e = \u003cspan class=\"pl-en\"\u003emap\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e ) \u003cspan class=\"pl-c\"\u003e// create Map\u003c/span\u003e\n -\u0026gt;\u003cspan class=\"pl-en\"\u003epush\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ethree\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue3\u003c/span\u003e'\u003c/span\u003e] ) \u003cspan class=\"pl-c\"\u003e// add element\u003c/span\u003e\n -\u0026gt;\u003cspan class=\"pl-en\"\u003eremove\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e ) \u003cspan class=\"pl-c\"\u003e// remove element\u003c/span\u003e\n -\u0026gt;\u003cspan class=\"pl-en\"\u003efilter\u003c/span\u003e() \u003cspan class=\"pl-c\"\u003e// remove empty values\u003c/span\u003e\n -\u0026gt;\u003cspan class=\"pl-en\"\u003esort\u003c/span\u003e() \u003cspan class=\"pl-c\"\u003e// sort elements\u003c/span\u003e\n -\u0026gt;\u003cspan class=\"pl-en\"\u003ecol\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e ) \u003cspan class=\"pl-c\"\u003e// create ['three' =\u0026gt; 'value3']\u003c/span\u003e\n -\u0026gt;\u003cspan class=\"pl-en\"\u003efirst\u003c/span\u003e(); \u003cspan class=\"pl-c\"\u003e// return first value\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eYou can still use:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$map[] = ['id' =\u0026gt; 'three', 'value' =\u0026gt; 'value3'];\n$value = $map[0];\ncount( $map );\nforeach( $map as $key =\u0026gt; value );\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e[] = [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ethree\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evalue3\u003c/span\u003e'\u003c/span\u003e];\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e = \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e[\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e];\n\u003cspan class=\"pl-en\"\u003ecount\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e );\n\u003cspan class=\"pl-k\"\u003eforeach\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e \u003cspan class=\"pl-k\"\u003eas\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e =\u0026gt; value );\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eUse callbacks:\u003c/strong\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eAlso, the map object allows you to pass anonymous functions to a lot of methods, e.g.:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$map-\u0026gt;each( function( $val, $key ) {\n\techo $key . ': ' . $val;\n} );\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003eeach\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n\t\u003cspan class=\"pl-k\"\u003eecho\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e . \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e: \u003c/span\u003e'\u003c/span\u003e . \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e;\n} );\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003ejQuery style:\u003c/strong\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eIf your map elements are objects, you can call their methods for each object and get\nthe result as new map just like in jQuery:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"// MyClass implements setStatus() (returning $this) and getCode() (initialized by constructor)\n\n$map = Map::from( ['a' =\u0026gt; new MyClass( 'x' ), 'b' =\u0026gt; new MyClass( 'y' )] );\n$map-\u0026gt;setStatus( 1 )-\u0026gt;getCode()-\u0026gt;toArray();\"\u003e\u003cpre\u003e\u003cspan class=\"pl-c\"\u003e// MyClass implements setStatus() (returning $this) and getCode() (initialized by constructor)\u003c/span\u003e\n\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e = Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMyClass\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e ), \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMyClass\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ey\u003c/span\u003e'\u003c/span\u003e )] );\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003esetStatus\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003egetCode\u003c/span\u003e()-\u0026gt;\u003cspan class=\"pl-en\"\u003etoArray\u003c/span\u003e();\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThis will call \u003ccode\u003esetStatus( 1 )\u003c/code\u003e on both objects. If \u003ccode\u003esetStatus()\u003c/code\u003e implementation\nreturns \u003ccode\u003e$this\u003c/code\u003e, the new map will also contain:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"['a' =\u0026gt; MyClass(), 'b' =\u0026gt; MyClass()]\"\u003e\u003cpre\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-en\"\u003eMyClass\u003c/span\u003e(), \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-en\"\u003eMyClass\u003c/span\u003e()]\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eOn those new map elements, \u003ccode\u003egetCode()\u003c/code\u003e will be called which returns \u003ccode\u003ex\u003c/code\u003e for the\nfirst object and \u003ccode\u003ey\u003c/code\u003e for the second. The map created from the results of \u003ccode\u003egetCode()\u003c/code\u003e\nwill return:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"['a' =\u0026gt; 'x', 'b' =\u0026gt; 'y']\"\u003e\u003cpre\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ey\u003c/span\u003e'\u003c/span\u003e]\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMethods\u003c/h2\u003e\u003ca id=\"user-content-methods\" class=\"anchor\" aria-label=\"Permalink: Methods\" href=\"#methods\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\n\u003cp dir=\"auto\"\u003e\u003ca href=\"#is_map-function\"\u003efunction is_map\u003c/a\u003e\n\u003ca href=\"#map-function\"\u003efunction map\u003c/a\u003e\n\u003ca href=\"#__construct\"\u003e__construct\u003c/a\u003e\n\u003ca href=\"#__call\"\u003e__call\u003c/a\u003e\n\u003ca href=\"#__callstatic\"\u003e__callStatic\u003c/a\u003e\n\u003ca href=\"#after\"\u003eafter\u003c/a\u003e\n\u003ca href=\"#all\"\u003eall\u003c/a\u003e\n\u003ca href=\"#any\"\u003eany\u003c/a\u003e\n\u003ca href=\"#arsort\"\u003earsort\u003c/a\u003e\n\u003ca href=\"#arsorted\"\u003earsorted\u003c/a\u003e\n\u003ca href=\"#asort\"\u003easort\u003c/a\u003e\n\u003ca href=\"#asorted\"\u003easorted\u003c/a\u003e\n\u003ca href=\"#at\"\u003eat\u003c/a\u003e\n\u003ca href=\"#avg\"\u003eavg\u003c/a\u003e\n\u003ca href=\"#before\"\u003ebefore\u003c/a\u003e\n\u003ca href=\"#bool\"\u003ebool\u003c/a\u003e\n\u003ca href=\"#call\"\u003ecall\u003c/a\u003e\n\u003ca href=\"#cast\"\u003ecast\u003c/a\u003e\n\u003ca href=\"#chunk\"\u003echunk\u003c/a\u003e\n\u003ca href=\"#clear\"\u003eclear\u003c/a\u003e\n\u003ca href=\"#clone\"\u003eclone\u003c/a\u003e\n\u003ca href=\"#col\"\u003ecol\u003c/a\u003e\n\u003ca href=\"#collapse\"\u003ecollapse\u003c/a\u003e\n\u003ca href=\"#combine\"\u003ecombine\u003c/a\u003e\n\u003ca href=\"#concat\"\u003econcat\u003c/a\u003e\n\u003ca href=\"#contains\"\u003econtains\u003c/a\u003e\n\u003ca href=\"#copy\"\u003ecopy\u003c/a\u003e\n\u003ca href=\"#count\"\u003ecount\u003c/a\u003e\n\u003ca href=\"#countby\"\u003ecountBy\u003c/a\u003e\n\u003ca href=\"#dd\"\u003edd\u003c/a\u003e\n\u003ca href=\"#delimiter\"\u003edelimiter\u003c/a\u003e\n\u003ca href=\"#diff\"\u003ediff\u003c/a\u003e\n\u003ca href=\"#diffassoc\"\u003ediffAssoc\u003c/a\u003e\n\u003ca href=\"#diffkeys\"\u003ediffKeys\u003c/a\u003e\n\u003ca href=\"#dump\"\u003edump\u003c/a\u003e\n\u003ca href=\"#duplicates\"\u003eduplicates\u003c/a\u003e\n\u003ca href=\"#each\"\u003eeach\u003c/a\u003e\n\u003ca href=\"#empty\"\u003eempty\u003c/a\u003e\n\u003ca href=\"#equals\"\u003eequals\u003c/a\u003e\n\u003ca href=\"#every\"\u003eevery\u003c/a\u003e\n\u003ca href=\"#except\"\u003eexcept\u003c/a\u003e\n\u003ca href=\"#explode\"\u003eexplode\u003c/a\u003e\n\u003ca href=\"#fill\"\u003efill\u003c/a\u003e\n\u003ca href=\"#filter\"\u003efilter\u003c/a\u003e\n\u003ca href=\"#find\"\u003efind\u003c/a\u003e\n\u003ca href=\"#findkey\"\u003efindKey\u003c/a\u003e\n\u003ca href=\"#first\"\u003efirst\u003c/a\u003e\n\u003ca href=\"#firstkey\"\u003efirstKey\u003c/a\u003e\n\u003ca href=\"#flat\"\u003eflat\u003c/a\u003e\n\u003ca href=\"#flip\"\u003eflip\u003c/a\u003e\n\u003ca href=\"#float\"\u003efloat\u003c/a\u003e\n\u003ca href=\"#from\"\u003efrom\u003c/a\u003e\n\u003ca href=\"#fromjson\"\u003efromJson\u003c/a\u003e\n\u003ca href=\"#get\"\u003eget\u003c/a\u003e\n\u003ca href=\"#getiterator\"\u003egetIterator\u003c/a\u003e\n\u003ca href=\"#grep\"\u003egrep\u003c/a\u003e\n\u003ca href=\"#groupby\"\u003egroupBy\u003c/a\u003e\n\u003ca href=\"#has\"\u003ehas\u003c/a\u003e\n\u003ca href=\"#if\"\u003eif\u003c/a\u003e\n\u003ca href=\"#ifany\"\u003eifAny\u003c/a\u003e\n\u003ca href=\"#ifempty\"\u003eifEmpty\u003c/a\u003e\n\u003ca href=\"#implements\"\u003eimplements\u003c/a\u003e\n\u003ca href=\"#in\"\u003ein\u003c/a\u003e\n\u003ca href=\"#includes\"\u003eincludes\u003c/a\u003e\n\u003ca href=\"#index\"\u003eindex\u003c/a\u003e\n\u003ca href=\"#insertafter\"\u003einsertAfter\u003c/a\u003e\n\u003ca href=\"#insertat\"\u003einsertAt\u003c/a\u003e\n\u003ca href=\"#insertbefore\"\u003einsertBefore\u003c/a\u003e\n\u003ca href=\"#int\"\u003eint\u003c/a\u003e\n\u003ca href=\"#intersect\"\u003eintersect\u003c/a\u003e\n\u003ca href=\"#intersectassoc\"\u003eintersectAssoc\u003c/a\u003e\n\u003ca href=\"#intersectkeys\"\u003eintersectKeys\u003c/a\u003e\n\u003ca href=\"#is\"\u003eis\u003c/a\u003e\n\u003ca href=\"#isempty\"\u003eisEmpty\u003c/a\u003e\n\u003ca href=\"#islist\"\u003eisList\u003c/a\u003e\n\u003ca href=\"#isobject\"\u003eisObject\u003c/a\u003e\n\u003ca href=\"#isnumeric\"\u003eisNumeric\u003c/a\u003e\n\u003ca href=\"#isscalar\"\u003eisScalar\u003c/a\u003e\n\u003ca href=\"#isstring\"\u003eisString\u003c/a\u003e\n\u003ca href=\"#join\"\u003ejoin\u003c/a\u003e\n\u003ca href=\"#jsonserialize\"\u003ejsonSerialize\u003c/a\u003e\n\u003ca href=\"#keys\"\u003ekeys\u003c/a\u003e\n\u003ca href=\"#krsort\"\u003ekrsort\u003c/a\u003e\n\u003ca href=\"#krsorted\"\u003ekrsorted\u003c/a\u003e\n\u003ca href=\"#ksort\"\u003eksort\u003c/a\u003e\n\u003ca href=\"#ksorted\"\u003eksorted\u003c/a\u003e\n\u003ca href=\"#last\"\u003elast\u003c/a\u003e\n\u003ca href=\"#lastkey\"\u003elastKey\u003c/a\u003e\n\u003ca href=\"#ltrim\"\u003eltrim\u003c/a\u003e\n\u003ca href=\"#map\"\u003emap\u003c/a\u003e\n\u003ca href=\"#max\"\u003emax\u003c/a\u003e\n\u003ca href=\"#merge\"\u003emerge\u003c/a\u003e\n\u003ca href=\"#method\"\u003emethod\u003c/a\u003e\n\u003ca href=\"#min\"\u003emin\u003c/a\u003e\n\u003ca href=\"#none\"\u003enone\u003c/a\u003e\n\u003ca href=\"#nth\"\u003enth\u003c/a\u003e\n\u003ca href=\"#offsetexists\"\u003eoffsetExists\u003c/a\u003e\n\u003ca href=\"#offsetget\"\u003eoffsetGet\u003c/a\u003e\n\u003ca href=\"#offsetset\"\u003eoffsetSet\u003c/a\u003e\n\u003ca href=\"#offsetunset\"\u003eoffsetUnset\u003c/a\u003e\n\u003ca href=\"#only\"\u003eonly\u003c/a\u003e\n\u003ca href=\"#order\"\u003eorder\u003c/a\u003e\n\u003ca href=\"#pad\"\u003epad\u003c/a\u003e\n\u003ca href=\"#partition\"\u003epartition\u003c/a\u003e\n\u003ca href=\"#percentage\"\u003epercentage\u003c/a\u003e\n\u003ca href=\"#pipe\"\u003epipe\u003c/a\u003e\n\u003ca href=\"#pluck\"\u003epluck\u003c/a\u003e\n\u003ca href=\"#pop\"\u003epop\u003c/a\u003e\n\u003ca href=\"#pos\"\u003epos\u003c/a\u003e\n\u003ca href=\"#prefix\"\u003eprefix\u003c/a\u003e\n\u003ca href=\"#prepend\"\u003eprepend\u003c/a\u003e\n\u003ca href=\"#pull\"\u003epull\u003c/a\u003e\n\u003ca href=\"#push\"\u003epush\u003c/a\u003e\n\u003ca href=\"#put\"\u003eput\u003c/a\u003e\n\u003ca href=\"#random\"\u003erandom\u003c/a\u003e\n\u003ca href=\"#reduce\"\u003ereduce\u003c/a\u003e\n\u003ca href=\"#reject\"\u003ereject\u003c/a\u003e\n\u003ca href=\"#rekey\"\u003erekey\u003c/a\u003e\n\u003ca href=\"#remove\"\u003eremove\u003c/a\u003e\n\u003ca href=\"#replace\"\u003ereplace\u003c/a\u003e\n\u003ca href=\"#reverse\"\u003ereverse\u003c/a\u003e\n\u003ca href=\"#reversed\"\u003ereversed\u003c/a\u003e\n\u003ca href=\"#rsort\"\u003ersort\u003c/a\u003e\n\u003ca href=\"#rsorted\"\u003ersorted\u003c/a\u003e\n\u003ca href=\"#rtrim\"\u003ertrim\u003c/a\u003e\n\u003ca href=\"#search\"\u003esearch\u003c/a\u003e\n\u003ca href=\"#sep\"\u003esep\u003c/a\u003e\n\u003ca href=\"#set\"\u003eset\u003c/a\u003e\n\u003ca href=\"#shift\"\u003eshift\u003c/a\u003e\n\u003ca href=\"#shuffle\"\u003eshuffle\u003c/a\u003e\n\u003ca href=\"#shuffled\"\u003eshuffled\u003c/a\u003e\n\u003ca href=\"#skip\"\u003eskip\u003c/a\u003e\n\u003ca href=\"#slice\"\u003eslice\u003c/a\u003e\n\u003ca href=\"#some\"\u003esome\u003c/a\u003e\n\u003ca href=\"#sort\"\u003esort\u003c/a\u003e\n\u003ca href=\"#sorted\"\u003esorted\u003c/a\u003e\n\u003ca href=\"#splice\"\u003esplice\u003c/a\u003e\n\u003ca href=\"#strafter\"\u003estrAfter\u003c/a\u003e\n\u003ca href=\"#strbefore\"\u003estrBefore\u003c/a\u003e\n\u003ca href=\"#strcompare\"\u003estrCompare\u003c/a\u003e\n\u003ca href=\"#strcontains\"\u003estrContains\u003c/a\u003e\n\u003ca href=\"#strcontainsall\"\u003estrContainsAll\u003c/a\u003e\n\u003ca href=\"#strends\"\u003estrEnds\u003c/a\u003e\n\u003ca href=\"#strendsall\"\u003estrEndsAll\u003c/a\u003e\n\u003ca href=\"#string\"\u003estring\u003c/a\u003e\n\u003ca href=\"#strlower\"\u003estrLower\u003c/a\u003e\n\u003ca href=\"#strreplace\"\u003estrReplace\u003c/a\u003e\n\u003ca href=\"#strstarts\"\u003estrStarts\u003c/a\u003e\n\u003ca href=\"#strstartsall\"\u003estrStartsAll\u003c/a\u003e\n\u003ca href=\"#strupper\"\u003estrUpper\u003c/a\u003e\n\u003ca href=\"#suffix\"\u003esuffix\u003c/a\u003e\n\u003ca href=\"#sum\"\u003esum\u003c/a\u003e\n\u003ca href=\"#take\"\u003etake\u003c/a\u003e\n\u003ca href=\"#tap\"\u003etap\u003c/a\u003e\n\u003ca href=\"#times\"\u003etimes\u003c/a\u003e\n\u003ca href=\"#to\"\u003eto\u003c/a\u003e\n\u003ca href=\"#toarray\"\u003etoArray\u003c/a\u003e\n\u003ca href=\"#tojson\"\u003etoJson\u003c/a\u003e\n\u003ca href=\"#toreversed\"\u003etoReversed\u003c/a\u003e\n\u003ca href=\"#tosorted\"\u003etoSorted\u003c/a\u003e\n\u003ca href=\"#tourl\"\u003etoUrl\u003c/a\u003e\n\u003ca href=\"#transform\"\u003etransform\u003c/a\u003e\n\u003ca href=\"#transpose\"\u003etranspose\u003c/a\u003e\n\u003ca href=\"#traverse\"\u003etraverse\u003c/a\u003e\n\u003ca href=\"#tree\"\u003etree\u003c/a\u003e\n\u003ca href=\"#trim\"\u003etrim\u003c/a\u003e\n\u003ca href=\"#uasort\"\u003euasort\u003c/a\u003e\n\u003ca href=\"#uasorted\"\u003euasorted\u003c/a\u003e\n\u003ca href=\"#uksort\"\u003euksort\u003c/a\u003e\n\u003ca href=\"#uksorted\"\u003euksorted\u003c/a\u003e\n\u003ca href=\"#union\"\u003eunion\u003c/a\u003e\n\u003ca href=\"#unique\"\u003eunique\u003c/a\u003e\n\u003ca href=\"#unshift\"\u003eunshift\u003c/a\u003e\n\u003ca href=\"#usort\"\u003eusort\u003c/a\u003e\n\u003ca href=\"#usorted\"\u003eusorted\u003c/a\u003e\n\u003ca href=\"#values\"\u003evalues\u003c/a\u003e\n\u003ca href=\"#walk\"\u003ewalk\u003c/a\u003e\n\u003ca href=\"#where\"\u003ewhere\u003c/a\u003e\n\u003ca href=\"#with\"\u003ewith\u003c/a\u003e\n\u003ca href=\"#zip\"\u003ezip\u003c/a\u003e\u003c/p\u003e\n\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eCreate\u003c/h3\u003e\u003ca id=\"user-content-create\" class=\"anchor\" aria-label=\"Permalink: Create\" href=\"#create\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#map-function\"\u003efunction map()\u003c/a\u003e : Creates a new map from passed elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#__construct\"\u003e__construct()\u003c/a\u003e : Creates a new map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#clone\"\u003eclone()\u003c/a\u003e : Clones the map and all objects within\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#copy\"\u003ecopy()\u003c/a\u003e : Creates a new copy\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#explode\"\u003eexplode()\u003c/a\u003e : Splits a string into a map of elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#fill\"\u003efill()\u003c/a\u003e : Creates a new map filled with given value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#from\"\u003efrom()\u003c/a\u003e : Creates a new map from passed elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#fromjson\"\u003efromJson()\u003c/a\u003e : Creates a new map from a JSON string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#times\"\u003etimes()\u003c/a\u003e : Creates a new map by invoking the closure a number of times\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#tree\"\u003etree()\u003c/a\u003e : Creates a tree structure from the list items\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAccess\u003c/h3\u003e\u003ca id=\"user-content-access\" class=\"anchor\" aria-label=\"Permalink: Access\" href=\"#access\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#__call\"\u003e__call()\u003c/a\u003e : Calls a custom method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#__callstatic\"\u003e__callStatic()\u003c/a\u003e : Calls a custom method statically\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#all\"\u003eall()\u003c/a\u003e : Returns the plain array\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#any\"\u003eany()\u003c/a\u003e : Tests if at least one element satisfies the callback function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#at\"\u003eat()\u003c/a\u003e : Returns the value at the given position\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#bool\"\u003ebool()\u003c/a\u003e : Returns an element by key and casts it to boolean\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#call\"\u003ecall()\u003c/a\u003e : Calls the given method on all items\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#find\"\u003efind()\u003c/a\u003e : Returns the first/last element where the callback returns TRUE\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#findkey\"\u003efindKey()\u003c/a\u003e : Returns the first/last key where the callback returns TRUE\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#first\"\u003efirst()\u003c/a\u003e : Returns the first element\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#firstkey\"\u003efirstKey()\u003c/a\u003e : Returns the first key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#get\"\u003eget()\u003c/a\u003e : Returns an element by key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#index\"\u003eindex()\u003c/a\u003e : Returns the numerical index of the given key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#int\"\u003eint()\u003c/a\u003e : Returns an element by key and casts it to integer\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#float\"\u003efloat()\u003c/a\u003e : Returns an element by key and casts it to float\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#keys\"\u003ekeys()\u003c/a\u003e : Returns all keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#last\"\u003elast()\u003c/a\u003e : Returns the last element\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#lastkey\"\u003elastKey()\u003c/a\u003e : Returns the last key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pop\"\u003epop()\u003c/a\u003e : Returns and removes the last element\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pos\"\u003epos()\u003c/a\u003e : Returns the numerical index of the value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pull\"\u003epull()\u003c/a\u003e : Returns and removes an element by key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#random\"\u003erandom()\u003c/a\u003e : Returns random elements preserving keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#search\"\u003esearch()\u003c/a\u003e : Find the key of an element\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#shift\"\u003eshift()\u003c/a\u003e : Returns and removes the first element\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#string\"\u003estring()\u003c/a\u003e : Returns an element by key and casts it to string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#to\"\u003eto()\u003c/a\u003e : Returns the plain array\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#toarray\"\u003etoArray()\u003c/a\u003e : Returns the plain array\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#values\"\u003evalues()\u003c/a\u003e : Returns all elements with new keys\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAdd\u003c/h3\u003e\u003ca id=\"user-content-add\" class=\"anchor\" aria-label=\"Permalink: Add\" href=\"#add\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#concat\"\u003econcat()\u003c/a\u003e : Adds all elements with new keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#insertafter\"\u003einsertAfter()\u003c/a\u003e : Inserts the value after the given element\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#insertat\"\u003einsertAt()\u003c/a\u003e : Inserts the element at the given position in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#insertbefore\"\u003einsertBefore()\u003c/a\u003e : Inserts the value before the given element\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#merge\"\u003emerge()\u003c/a\u003e : Combines elements overwriting existing ones\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pad\"\u003epad()\u003c/a\u003e : Fill up to the specified length with the given value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#prepend\"\u003eprepend()\u003c/a\u003e : Adds an element at the beginning (alias)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#push\"\u003epush()\u003c/a\u003e : Adds an element to the end\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#put\"\u003eput()\u003c/a\u003e : Sets the given key and value in the map (alias)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#set\"\u003eset()\u003c/a\u003e : Overwrites or adds an element\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#union\"\u003eunion()\u003c/a\u003e : Adds the elements without overwriting existing ones\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#unshift\"\u003eunshift()\u003c/a\u003e : Adds an element at the beginning\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#with\"\u003ewith()\u003c/a\u003e : Returns a copy and sets an element\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eAggregate\u003c/h3\u003e\u003ca id=\"user-content-aggregate\" class=\"anchor\" aria-label=\"Permalink: Aggregate\" href=\"#aggregate\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#avg\"\u003eavg()\u003c/a\u003e : Returns the average of all values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#count\"\u003ecount()\u003c/a\u003e : Returns the total number of elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#countby\"\u003ecountBy()\u003c/a\u003e : Counts how often the same values are in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#max\"\u003emax()\u003c/a\u003e : Returns the maximum value of all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#min\"\u003emin()\u003c/a\u003e : Returns the minium value of all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#percentage\"\u003epercentage()\u003c/a\u003e : Returns the percentage of all elements passing the test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#sum\"\u003esum()\u003c/a\u003e : Returns the sum of all values in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eDebug\u003c/h3\u003e\u003ca id=\"user-content-debug\" class=\"anchor\" aria-label=\"Permalink: Debug\" href=\"#debug\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#dd\"\u003edd()\u003c/a\u003e : Prints the map content and terminates the script\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#dump\"\u003edump()\u003c/a\u003e : Prints the map content\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#tap\"\u003etap()\u003c/a\u003e : Passes a clone of the map to the given callback\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eOrder By\u003c/h3\u003e\u003ca id=\"user-content-order-by\" class=\"anchor\" aria-label=\"Permalink: Order By\" href=\"#order-by\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#arsort\"\u003earsort()\u003c/a\u003e : Reverse sort elements preserving keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#arsorted\"\u003earsorted()\u003c/a\u003e : Reverse sort elements preserving keys in a copy of the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#asort\"\u003easort()\u003c/a\u003e : Sort elements preserving keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#asorted\"\u003easorted()\u003c/a\u003e : Sort elements preserving keys in a copy of the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#krsort\"\u003ekrsort()\u003c/a\u003e : Reverse sort elements by keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#krsorted\"\u003ekrsorted()\u003c/a\u003e : Reverse sort elements by keys in a copy of the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#ksort\"\u003eksort()\u003c/a\u003e : Sort elements by keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#ksorted\"\u003eksorted()\u003c/a\u003e : Sorts a copy of the elements by their keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#order\"\u003eorder()\u003c/a\u003e : Orders elements by the passed keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#reverse\"\u003ereverse()\u003c/a\u003e : Reverses the array order preserving keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#reversed\"\u003ereversed()\u003c/a\u003e : Reverses the element order in a copy of the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#toreversed\"\u003etoReversed()\u003c/a\u003e : Reverses the element order in a copy of the map (alias)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#rsort\"\u003ersort()\u003c/a\u003e : Reverse sort elements using new keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#rsorted\"\u003ersorted()\u003c/a\u003e : Reverse sort elements using new keys in a copy of the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#shuffle\"\u003eshuffle()\u003c/a\u003e : Randomizes the element order\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#shuffled\"\u003eshuffled()\u003c/a\u003e : Randomizes the element order in a copy of the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#sort\"\u003esort()\u003c/a\u003e : Sorts the elements in-place assigning new keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#sorted\"\u003esorted()\u003c/a\u003e : Sorts the elements in a copy of the map using new keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#tosorted\"\u003etoSorted()\u003c/a\u003e : Sorts the elements in a copy of the map using new keys (alias)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#uasort\"\u003euasort()\u003c/a\u003e : Sorts elements preserving keys using callback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#uasorted\"\u003euasorted()\u003c/a\u003e : Sorts elements preserving keys using callback in a copy of the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#uksort\"\u003euksort()\u003c/a\u003e : Sorts elements by keys using callback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#uksorted\"\u003euksorted()\u003c/a\u003e : Sorts elements by keys using callback in a copy of the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#usort\"\u003eusort()\u003c/a\u003e : Sorts elements using callback assigning new keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#usorted\"\u003eusorted()\u003c/a\u003e : Sorts elements using callback assigning new keys in a copy of the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eShorten\u003c/h3\u003e\u003ca id=\"user-content-shorten\" class=\"anchor\" aria-label=\"Permalink: Shorten\" href=\"#shorten\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#after\"\u003eafter()\u003c/a\u003e : Returns the elements after the given one\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#before\"\u003ebefore()\u003c/a\u003e : Returns the elements before the given one\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#clear\"\u003eclear()\u003c/a\u003e : Removes all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#diff\"\u003ediff()\u003c/a\u003e : Returns the elements missing in the given list\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#diffassoc\"\u003ediffAssoc()\u003c/a\u003e : Returns the elements missing in the given list and checks keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#diffkeys\"\u003ediffKeys()\u003c/a\u003e : Returns the elements missing in the given list by keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#duplicates\"\u003eduplicates()\u003c/a\u003e : Returns the duplicate values from the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#except\"\u003eexcept()\u003c/a\u003e : Returns a new map without the passed element keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#filter\"\u003efilter()\u003c/a\u003e : Applies a filter to all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#grep\"\u003egrep()\u003c/a\u003e : Applies a regular expression to all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#intersect\"\u003eintersect()\u003c/a\u003e : Returns the elements shared\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#intersectassoc\"\u003eintersectAssoc()\u003c/a\u003e : Returns the elements shared and checks keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#intersectkeys\"\u003eintersectKeys()\u003c/a\u003e : Returns the elements shared by keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#nth\"\u003enth()\u003c/a\u003e : Returns every nth element from the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#only\"\u003eonly()\u003c/a\u003e : Returns only those elements specified by the keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pop\"\u003epop()\u003c/a\u003e : Returns and removes the last element\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pull\"\u003epull()\u003c/a\u003e : Returns and removes an element by key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#reject\"\u003ereject()\u003c/a\u003e : Removes all matched elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#remove\"\u003eremove()\u003c/a\u003e : Removes an element by key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#shift\"\u003eshift()\u003c/a\u003e : Returns and removes the first element\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#skip\"\u003eskip()\u003c/a\u003e : Skips the given number of items and return the rest\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#slice\"\u003eslice()\u003c/a\u003e : Returns a slice of the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#take\"\u003etake()\u003c/a\u003e : Returns a new map with the given number of items\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#unique\"\u003eunique()\u003c/a\u003e : Returns all unique elements preserving keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#where\"\u003ewhere()\u003c/a\u003e : Filters the list of elements by a given condition\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eTest\u003c/h3\u003e\u003ca id=\"user-content-test\" class=\"anchor\" aria-label=\"Permalink: Test\" href=\"#test\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#is_map-function\"\u003efunction is_map()\u003c/a\u003e : Tests if the variable is a map object\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#any\"\u003eany()\u003c/a\u003e : Tests if at least one element satisfies the callback function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#contains\"\u003econtains()\u003c/a\u003e : Tests if an item exists in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#each\"\u003eeach()\u003c/a\u003e : Applies a callback to each element\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#empty\"\u003eempty()\u003c/a\u003e : Tests if map is empty\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#equals\"\u003eequals()\u003c/a\u003e : Tests if map contents are equal\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#every\"\u003eevery()\u003c/a\u003e : Verifies that all elements pass the test of the given callback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#has\"\u003ehas()\u003c/a\u003e : Tests if a key exists\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#if\"\u003eif()\u003c/a\u003e : Executes callbacks depending on the condition\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#ifany\"\u003eifAny()\u003c/a\u003e : Executes callbacks if the map contains elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#ifempty\"\u003eifEmpty()\u003c/a\u003e : Executes callbacks if the map is empty\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#in\"\u003ein()\u003c/a\u003e : Tests if element is included\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#includes\"\u003eincludes()\u003c/a\u003e : Tests if element is included\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#is\"\u003eis()\u003c/a\u003e : Tests if the map consists of the same keys and values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isempty\"\u003eisEmpty()\u003c/a\u003e : Tests if map is empty\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#islist\"\u003eisList()\u003c/a\u003e : Checks if the map contains a list of subsequentially numbered keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isnumeric\"\u003eisNumeric()\u003c/a\u003e : Tests if all entries are numeric values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isobject\"\u003eisObject()\u003c/a\u003e : Tests if all entries are objects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isscalar\"\u003eisScalar()\u003c/a\u003e : Tests if all entries are scalar values.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isstring\"\u003eisString()\u003c/a\u003e : Tests if all entries are string values.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#implements\"\u003eimplements()\u003c/a\u003e : Tests if all entries are objects implementing the interface\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#none\"\u003enone()\u003c/a\u003e : Tests if none of the elements are part of the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#some\"\u003esome()\u003c/a\u003e : Tests if at least one element is included\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#strcompare\"\u003estrCompare()\u003c/a\u003e : Compares the value against all map elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#strcontains\"\u003estrContains()\u003c/a\u003e : Tests if at least one of the passed strings is part of at least one entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#strcontainsall\"\u003estrContainsAll()\u003c/a\u003e : Tests if all of the entries contains one of the passed strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#strends\"\u003estrEnds()\u003c/a\u003e : Tests if at least one of the entries ends with one of the passed strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#strendsall\"\u003estrEndsAll()\u003c/a\u003e : Tests if all of the entries ends with at least one of the passed strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#strstarts\"\u003estrStarts()\u003c/a\u003e : Tests if at least one of the entries starts with at least one of the passed strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#strstartsall\"\u003estrStartsAll()\u003c/a\u003e : Tests if all of the entries starts with one of the passed strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMutate\u003c/h3\u003e\u003ca id=\"user-content-mutate\" class=\"anchor\" aria-label=\"Permalink: Mutate\" href=\"#mutate\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#cast\"\u003ecast()\u003c/a\u003e : Casts all entries to the passed type\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#chunk\"\u003echunk()\u003c/a\u003e : Splits the map into chunks\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#col\"\u003ecol()\u003c/a\u003e : Creates a key/value mapping\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#collapse\"\u003ecollapse()\u003c/a\u003e : Collapses multi-dimensional elements overwriting elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#combine\"\u003ecombine()\u003c/a\u003e : Combines the map elements as keys with the given values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#flat\"\u003eflat()\u003c/a\u003e : Flattens multi-dimensional elements without overwriting elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#flip\"\u003eflip()\u003c/a\u003e : Exchanges keys with their values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#groupby\"\u003egroupBy()\u003c/a\u003e : Groups associative array elements or objects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#join\"\u003ejoin()\u003c/a\u003e : Returns concatenated elements as string with separator\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#ltrim\"\u003eltrim()\u003c/a\u003e : Removes the passed characters from the left of all strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#map\"\u003emap()\u003c/a\u003e : Applies a callback to each element and returns the results\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#partition\"\u003epartition()\u003c/a\u003e : Breaks the list into the given number of groups\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pipe\"\u003epipe()\u003c/a\u003e : Applies a callback to the whole map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pluck\"\u003epluck()\u003c/a\u003e : Creates a key/value mapping (alias)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#prefix\"\u003eprefix()\u003c/a\u003e : Adds a prefix to each map entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#reduce\"\u003ereduce()\u003c/a\u003e : Computes a single value from the map content\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#rekey\"\u003erekey()\u003c/a\u003e : Changes the keys according to the passed function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#replace\"\u003ereplace()\u003c/a\u003e : Replaces elements recursively\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#rtrim\"\u003ertrim()\u003c/a\u003e : Removes the passed characters from the right of all strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#splice\"\u003esplice()\u003c/a\u003e : Replaces a slice by new elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#strafter\"\u003estrAfter()\u003c/a\u003e : Returns the strings after the passed value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#strbefore\"\u003estrBefore()\u003c/a\u003e : Returns the strings before the passed value\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#strlower\"\u003estrLower()\u003c/a\u003e : Converts all alphabetic characters to lower case\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#strreplace\"\u003estrReplace()\u003c/a\u003e : Replaces all occurrences of the search string with the replacement string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#strupper\"\u003estrUpper()\u003c/a\u003e : Converts all alphabetic characters to upper case\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#suffix\"\u003esuffix()\u003c/a\u003e : Adds a suffix to each map entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#tojson\"\u003etoJson()\u003c/a\u003e : Returns the elements in JSON format\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#tourl\"\u003etoUrl()\u003c/a\u003e : Creates a HTTP query string\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#transform\"\u003etransform()\u003c/a\u003e : Applies a callback to each element which creates new key/value pairs\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#transpose\"\u003etranspose()\u003c/a\u003e : Exchanges rows and columns for a two dimensional map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#traverse\"\u003etraverse()\u003c/a\u003e : Traverses trees of nested items passing each item to the callback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#trim\"\u003etrim()\u003c/a\u003e : Removes the passed characters from the left/right of all strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#walk\"\u003ewalk()\u003c/a\u003e : Applies the given callback to all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#zip\"\u003ezip()\u003c/a\u003e : Merges the values of all arrays at the corresponding index\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMisc\u003c/h3\u003e\u003ca id=\"user-content-misc\" class=\"anchor\" aria-label=\"Permalink: Misc\" href=\"#misc\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#delimiter\"\u003edelimiter()\u003c/a\u003e : Sets or returns the seperator for paths to multi-dimensional arrays\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#getiterator\"\u003egetIterator()\u003c/a\u003e : Returns an iterator for the elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#jsonserialize\"\u003ejsonSerialize()\u003c/a\u003e : Specifies the data which should be serialized to JSON\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#method\"\u003emethod()\u003c/a\u003e : Registers a custom method\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#offsetexists\"\u003eoffsetExists()\u003c/a\u003e : Checks if the key exists\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#offsetget\"\u003eoffsetGet()\u003c/a\u003e : Returns an element by key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#offsetset\"\u003eoffsetSet()\u003c/a\u003e : Overwrites an element\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#offsetunset\"\u003eoffsetUnset()\u003c/a\u003e : Removes an element by key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#sep\"\u003esep()\u003c/a\u003e : Sets the seperator for paths to multi-dimensional arrays in the current map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eMethod documentation\u003c/h2\u003e\u003ca id=\"user-content-method-documentation\" class=\"anchor\" aria-label=\"Permalink: Method documentation\" href=\"#method-documentation\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eis_map() function\u003c/h3\u003e\u003ca id=\"user-content-is_map-function\" class=\"anchor\" aria-label=\"Permalink: is_map() function\" href=\"#is_map-function\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if the variable is a map object\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"function is_map( $var ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e is_map( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evar\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$var\u003c/code\u003e Variable to test\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"is_map( new Map() );\n// true\n\nis_map( [] );\n// false\"\u003e\u003cpre\u003e\u003cspan class=\"pl-en\"\u003eis_map\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e() );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\n\u003cspan class=\"pl-en\"\u003eis_map\u003c/span\u003e( [] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003emap() function\u003c/h3\u003e\u003ca id=\"user-content-map-function\" class=\"anchor\" aria-label=\"Permalink: map() function\" href=\"#map-function\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns a new map for the passed elements.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"function map( $elements = [] ) : \\Aimeos\\Map\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e map( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e = [] ) : \\\u003cspan class=\"pl-v\"\u003eAimeos\u003c/span\u003e\\\u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$elements\u003c/code\u003e List of elements or single value\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003e\\Aimeos\\Map\u003c/strong\u003e Map instance\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"// array\nmap( [] );\n\n// null\nmap( null );\n\n// scalar\nmap( 'a' );\n\n// object\nmap( new \\stdClass() );\n\n// map object\nmap( new Map() );\n\n// iterable object\nmap( new ArrayObject() );\n\n// closure evaluated lazily\nmap( function() {\n return [];\n} );\"\u003e\u003cpre\u003e\u003cspan class=\"pl-c\"\u003e// array\u003c/span\u003e\n\u003cspan class=\"pl-en\"\u003emap\u003c/span\u003e( [] );\n\n\u003cspan class=\"pl-c\"\u003e// null\u003c/span\u003e\n\u003cspan class=\"pl-en\"\u003emap\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e );\n\n\u003cspan class=\"pl-c\"\u003e// scalar\u003c/span\u003e\n\u003cspan class=\"pl-en\"\u003emap\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\n\u003cspan class=\"pl-c\"\u003e// object\u003c/span\u003e\n\u003cspan class=\"pl-en\"\u003emap\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e() );\n\n\u003cspan class=\"pl-c\"\u003e// map object\u003c/span\u003e\n\u003cspan class=\"pl-en\"\u003emap\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e() );\n\n\u003cspan class=\"pl-c\"\u003e// iterable object\u003c/span\u003e\n\u003cspan class=\"pl-en\"\u003emap\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eArrayObject\u003c/span\u003e() );\n\n\u003cspan class=\"pl-c\"\u003e// closure evaluated lazily\u003c/span\u003e\n\u003cspan class=\"pl-en\"\u003emap\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e() {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e [];\n} );\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#rekey\"\u003erekey()\u003c/a\u003e - Changes the keys according to the passed function\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#transform\"\u003etransform()\u003c/a\u003e - Creates new key/value pairs using the passed function and returns a new map for the result\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e__construct()\u003c/h3\u003e\u003ca id=\"user-content-__construct\" class=\"anchor\" aria-label=\"Permalink: __construct()\" href=\"#__construct\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCreates a new map object.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function __construct( $elements = [] )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e __construct( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e = [] )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$elements\u003c/code\u003e Single element, list of elements, Map object, iterable objects or iterators, everything else\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"// array\nnew Map( [] );\n\n// null\nnew Map( null );\n\n// scalar\nnew Map( 'a' );\n\n// object\nnew Map( new \\stdClass() );\n\n// map object\nnew Map( new Map() );\n\n// iterable object\nnew Map( new ArrayObject() );\n\n// closure evaluated lazily\nnew Map( function() {\n return [];\n} );\"\u003e\u003cpre\u003e\u003cspan class=\"pl-c\"\u003e// array\u003c/span\u003e\n\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e( [] );\n\n\u003cspan class=\"pl-c\"\u003e// null\u003c/span\u003e\n\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e );\n\n\u003cspan class=\"pl-c\"\u003e// scalar\u003c/span\u003e\n\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\n\u003cspan class=\"pl-c\"\u003e// object\u003c/span\u003e\n\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e() );\n\n\u003cspan class=\"pl-c\"\u003e// map object\u003c/span\u003e\n\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e() );\n\n\u003cspan class=\"pl-c\"\u003e// iterable object\u003c/span\u003e\n\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eArrayObject\u003c/span\u003e() );\n\n\u003cspan class=\"pl-c\"\u003e// closure evaluated lazily\u003c/span\u003e\n\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e() {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e [];\n} );\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e__call()\u003c/h3\u003e\u003ca id=\"user-content-__call\" class=\"anchor\" aria-label=\"Permalink: __call()\" href=\"#__call\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eHandles dynamic calls to custom methods for the class.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function __call( string $name, array $params )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e __call( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ename\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003earray\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eparams\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$name\u003c/code\u003e Method name\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003earray\u0026lt;mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$params\u003c/code\u003e List of parameters\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed\u003c/strong\u003e Result from called function or new map with results from the element methods\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eCalls a custom method added by \u003ca href=\"#method\"\u003eMap::method()\u003c/a\u003e. The called method\nhas access to the internal array by using \u003ccode\u003e$this-\u0026gt;items\u003c/code\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::method( 'case', function( $case = CASE_LOWER ) {\n return new self( array_change_key_case( $this-\u0026gt;items, $case ) );\n} );\n\nMap::from( ['a' =\u0026gt; 'bar'] )-\u0026gt;case( CASE_UPPER );\n// ['A' =\u0026gt; 'bar']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003emethod\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecase\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecase\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eCASE_LOWER\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eself\u003c/span\u003e( \u003cspan class=\"pl-en\"\u003earray_change_key_case\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e\u003cspan class=\"pl-smi\"\u003ethis\u003c/span\u003e\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-c1\"\u003eitems\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecase\u003c/span\u003e ) );\n} );\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecase\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003eCASE_UPPER\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['A' =\u0026gt; 'bar']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThis does also allow calling object methods if the items are objects:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$item = new MyClass(); // with method setStatus() (returning $this) and getCode() implemented\nMap::from( [$item, $item] )-\u0026gt;setStatus( 1 )-\u0026gt;getCode()-\u0026gt;toArray();\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e = \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMyClass\u003c/span\u003e(); \u003cspan class=\"pl-c\"\u003e// with method setStatus() (returning $this) and getCode() implemented\u003c/span\u003e\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esetStatus\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003egetCode\u003c/span\u003e()-\u0026gt;\u003cspan class=\"pl-en\"\u003etoArray\u003c/span\u003e();\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThis will call the \u003ccode\u003esetStatus()\u003c/code\u003e method of each element in the map and\nuse their return values to create a new map. On the new map, the \u003ccode\u003egetCode()\u003c/code\u003e\nmethod is called for every element and its return values are also stored in a new\nmap. This last map is then returned and the map keys from the original map are\npreserved in the returned map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eIf the elements are not objects, they are skipped and if this applies to all\nelements, an empty map is returned. In case the map contains objects of mixed\ntypes and one of them doesn't implement the called method, an error will be thrown.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#__callStatic\"\u003e__callStatic()\u003c/a\u003e - Handles static calls to custom methods for the class\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#call\"\u003ecall()\u003c/a\u003e - Calls the given method on all items and returns the result\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e__callStatic()\u003c/h3\u003e\u003ca id=\"user-content-__callstatic\" class=\"anchor\" aria-label=\"Permalink: __callStatic()\" href=\"#__callstatic\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eHandles static calls to custom methods for the class.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public static function __callStatic( string $name, array $params )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003estatic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e __callStatic( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ename\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003earray\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eparams\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$name\u003c/code\u003e Method name\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003earray\u0026lt;mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$params\u003c/code\u003e List of parameters\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed\u003c/strong\u003e Result from called function or new map with results from the element methods\u003c/li\u003e\n\u003cli\u003e@throws \u003cstrong\u003e\\BadMethodCallException\u003c/strong\u003e If no method has been registered for that name\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eCalls a custom method added by \u003ca href=\"#method\"\u003eMap::method()\u003c/a\u003e statically. The called method\nhas no access to the internal array because no object is available.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::method( 'foo', function( $arg1, $arg2 ) {} );\nMap::foo( $arg1, $arg2 );\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003emethod\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003earg1\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003earg2\u003c/span\u003e ) {} );\nMap::\u003cspan class=\"pl-en\"\u003efoo\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003earg1\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003earg2\u003c/span\u003e );\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#__call\"\u003e__call()\u003c/a\u003e - Handles dynamic calls to custom methods for the class\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#call\"\u003ecall()\u003c/a\u003e - Calls the given method on all items and returns the result\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eafter()\u003c/h3\u003e\u003ca id=\"user-content-after\" class=\"anchor\" aria-label=\"Permalink: after()\" href=\"#after\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the elements after the given one.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function after( $value ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e after( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|int|string\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Value or function with (item, key) parameters\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with the elements after the given one\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [0 =\u0026gt; 'b', 1 =\u0026gt; 'a'] )-\u0026gt;after( 'b' );\n// [1 =\u0026gt; 'a']\n\nMap::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 0] )-\u0026gt;after( 1 );\n// ['b' =\u0026gt; 0]\n\nMap::from( [0 =\u0026gt; 'b', 1 =\u0026gt; 'a'] )-\u0026gt;after( 'c' );\n// []\n\nMap::from( ['a', 'c', 'b'] )-\u0026gt;after( function( $item, $key ) {\n return $item \u0026gt;= 'c';\n} );\n// [2 =\u0026gt; 'b']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eafter\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [1 =\u0026gt; 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eafter\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['b' =\u0026gt; 0]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eafter\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eafter\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e \u0026gt;= \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// [2 =\u0026gt; 'b']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#before\"\u003ebefore()\u003c/a\u003e - Returns the elements before the given one\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eall()\u003c/h3\u003e\u003ca id=\"user-content-all\" class=\"anchor\" aria-label=\"Permalink: all()\" href=\"#all\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the elements as a plain array.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function all() : array\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e all() : \u003cspan class=\"pl-smi\"\u003earray\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003earray\u003c/strong\u003e Plain array\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a'] )-\u0026gt;all();\n// ['a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eall\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThis method is for compatibility to Laravel Collections. Use \u003ca href=\"#to\"\u003e\u003ccode\u003eto()\u003c/code\u003e\u003c/a\u003e instead if possible.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#to\"\u003eto()\u003c/a\u003e - Returns the elements as a plain array\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#toarray\"\u003etoArray()\u003c/a\u003e - Returns the elements as a plain array\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eany()\u003c/h3\u003e\u003ca id=\"user-content-any\" class=\"anchor\" aria-label=\"Permalink: any()\" href=\"#any\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if at least one element satisfies the callback function.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function any( \\Closure $callback ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e any( \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \\Closure $callback Anonymous function with (item, key) parameter\u003c/li\u003e\n\u003cli\u003e@return bool TRUE if at least one element satisfies the callback function, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;any( function( $item, $key ) {\n return $item === 'a';\n} );\n// TRUE\n\nMap::from( ['a', 'b'] )-\u0026gt;any( function( $item, $key ) {\n return !is_string( $item );\n} );\n// FALSE\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eany\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e === \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// TRUE\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eany\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e !\u003cspan class=\"pl-en\"\u003eis_string\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// FALSE\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#some\"\u003esome()\u003c/a\u003e - Tests if at least one element passes the test or is part of the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#every\"\u003eevery()\u003c/a\u003e - Verifies that all elements pass the test of the given callback\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003earsort()\u003c/h3\u003e\u003ca id=\"user-content-arsort\" class=\"anchor\" aria-label=\"Permalink: arsort()\" href=\"#arsort\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts all elements in reverse order and maintains the key association.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function arsort( int $options = SORT_REGULAR ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e arsort( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eSORT_REGULAR\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Sort options for \u003ccode\u003earsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method and no new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe \u003ccode\u003e$options\u003c/code\u003e parameter modifies how the values are compared. Possible parameter values are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSORT_REGULAR : compare elements normally (don't change types)\u003c/li\u003e\n\u003cli\u003eSORT_NUMERIC : compare elements numerically\u003c/li\u003e\n\u003cli\u003eSORT_STRING : compare elements as strings\u003c/li\u003e\n\u003cli\u003eSORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by \u003ccode\u003esetlocale()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_NATURAL : compare elements as strings using \"natural ordering\" like \u003ccode\u003enatsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['b' =\u0026gt; 0, 'a' =\u0026gt; 1] )-\u0026gt;arsort();\n// ['a' =\u0026gt; 1, 'b' =\u0026gt; 0]\n\nMap::from( ['a', 'b'] )-\u0026gt;arsort();\n// ['b', 'a']\n\nMap::from( [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] )-\u0026gt;arsort();\n// [1 =\u0026gt; 'b', 0 =\u0026gt; 'C']\n\nMap::from( [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] )-\u0026gt;arsort( SORT_STRING|SORT_FLAG_CASE );\n// [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] because 'C' -\u0026gt; 'c' and 'c' \u0026gt; 'b'\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003earsort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'b' =\u0026gt; 0]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003earsort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['b', 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003earsort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [1 =\u0026gt; 'b', 0 =\u0026gt; 'C']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003earsort\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003eSORT_STRING\u003c/span\u003e|\u003cspan class=\"pl-c1\"\u003eSORT_FLAG_CASE\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] because 'C' -\u0026gt; 'c' and 'c' \u0026gt; 'b'\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#arsorted\"\u003earsorted()\u003c/a\u003e - Sorts a copy of all elements in reverse order and maintains the key association\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003earsorted()\u003c/h3\u003e\u003ca id=\"user-content-arsorted\" class=\"anchor\" aria-label=\"Permalink: arsorted()\" href=\"#arsorted\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts a copy of all elements in reverse order and maintains the key association.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function arsorted( int $options = SORT_REGULAR ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e arsorted( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eSORT_REGULAR\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Sort options for \u003ccode\u003earsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method and a new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe \u003ccode\u003e$options\u003c/code\u003e parameter modifies how the values are compared. Possible parameter values are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSORT_REGULAR : compare elements normally (don't change types)\u003c/li\u003e\n\u003cli\u003eSORT_NUMERIC : compare elements numerically\u003c/li\u003e\n\u003cli\u003eSORT_STRING : compare elements as strings\u003c/li\u003e\n\u003cli\u003eSORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by \u003ccode\u003esetlocale()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_NATURAL : compare elements as strings using \"natural ordering\" like \u003ccode\u003enatsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['b' =\u0026gt; 0, 'a' =\u0026gt; 1] )-\u0026gt;arsorted();\n// ['a' =\u0026gt; 1, 'b' =\u0026gt; 0]\n\nMap::from( ['a', 'b'] )-\u0026gt;arsorted();\n// ['b', 'a']\n\nMap::from( [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] )-\u0026gt;arsorted();\n// [1 =\u0026gt; 'b', 0 =\u0026gt; 'C']\n\nMap::from( [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] )-\u0026gt;arsorted( SORT_STRING|SORT_FLAG_CASE );\n// [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] because 'C' -\u0026gt; 'c' and 'c' \u0026gt; 'b'\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003earsorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'b' =\u0026gt; 0]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003earsorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['b', 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003earsorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [1 =\u0026gt; 'b', 0 =\u0026gt; 'C']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003earsorted\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003eSORT_STRING\u003c/span\u003e|\u003cspan class=\"pl-c1\"\u003eSORT_FLAG_CASE\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] because 'C' -\u0026gt; 'c' and 'c' \u0026gt; 'b'\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#arsort\"\u003earsort()\u003c/a\u003e - Sorts all elements in reverse order and maintains the key association\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003easort()\u003c/h3\u003e\u003ca id=\"user-content-asort\" class=\"anchor\" aria-label=\"Permalink: asort()\" href=\"#asort\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts all elements and maintains the key association.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function asort( int $options = SORT_REGULAR ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e asort( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eSORT_REGULAR\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Sort options for \u003ccode\u003easort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method and no new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe parameter modifies how the values are compared. Possible parameter values are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSORT_REGULAR : compare elements normally (don't change types)\u003c/li\u003e\n\u003cli\u003eSORT_NUMERIC : compare elements numerically\u003c/li\u003e\n\u003cli\u003eSORT_STRING : compare elements as strings\u003c/li\u003e\n\u003cli\u003eSORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by \u003ccode\u003esetlocale()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_NATURAL : compare elements as strings using \"natural ordering\" like \u003ccode\u003enatsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 0] )-\u0026gt;asort();\n// ['b' =\u0026gt; 0, 'a' =\u0026gt; 1]\n\nMap::from( [0 =\u0026gt; 'b', 1 =\u0026gt; 'a'] )-\u0026gt;asort();\n// [1 =\u0026gt; 'a', 0 =\u0026gt; 'b']\n\nMap::from( [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] )-\u0026gt;asort();\n// [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] because 'C' \u0026lt; 'b'\n\nMap::from( [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] )-\u0026gt;asort( SORT_STRING|SORT_FLAG_CASE );\n// [1 =\u0026gt; 'b', 0 =\u0026gt; 'C'] because 'C' -\u0026gt; 'c' and 'c' \u0026gt; 'b'\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003easort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['b' =\u0026gt; 0, 'a' =\u0026gt; 1]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003easort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [1 =\u0026gt; 'a', 0 =\u0026gt; 'b']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003easort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] because 'C' \u0026lt; 'b'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003easort\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003eSORT_STRING\u003c/span\u003e|\u003cspan class=\"pl-c1\"\u003eSORT_FLAG_CASE\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [1 =\u0026gt; 'b', 0 =\u0026gt; 'C'] because 'C' -\u0026gt; 'c' and 'c' \u0026gt; 'b'\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#asorted\"\u003easorted()\u003c/a\u003e - Sorts a copy of all elements and maintains the key association\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003easorted()\u003c/h3\u003e\u003ca id=\"user-content-asorted\" class=\"anchor\" aria-label=\"Permalink: asorted()\" href=\"#asorted\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts a copy of all elements and maintains the key association.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function asorted( int $options = SORT_REGULAR ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e asorted( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eSORT_REGULAR\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Sort options for \u003ccode\u003easort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method and a new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe parameter modifies how the values are compared. Possible parameter values are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSORT_REGULAR : compare elements normally (don't change types)\u003c/li\u003e\n\u003cli\u003eSORT_NUMERIC : compare elements numerically\u003c/li\u003e\n\u003cli\u003eSORT_STRING : compare elements as strings\u003c/li\u003e\n\u003cli\u003eSORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by \u003ccode\u003esetlocale()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_NATURAL : compare elements as strings using \"natural ordering\" like \u003ccode\u003enatsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 0] )-\u0026gt;asorted();\n// ['b' =\u0026gt; 0, 'a' =\u0026gt; 1]\n\nMap::from( [0 =\u0026gt; 'b', 1 =\u0026gt; 'a'] )-\u0026gt;asorted();\n// [1 =\u0026gt; 'a', 0 =\u0026gt; 'b']\n\nMap::from( [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] )-\u0026gt;asorted();\n// [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] because 'C' \u0026lt; 'b'\n\nMap::from( [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] )-\u0026gt;asorted( SORT_STRING|SORT_FLAG_CASE );\n// [1 =\u0026gt; 'b', 0 =\u0026gt; 'C'] because 'C' -\u0026gt; 'c' and 'c' \u0026gt; 'b'\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003easorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['b' =\u0026gt; 0, 'a' =\u0026gt; 1]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003easorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [1 =\u0026gt; 'a', 0 =\u0026gt; 'b']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003easorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] because 'C' \u0026lt; 'b'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003easorted\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003eSORT_STRING\u003c/span\u003e|\u003cspan class=\"pl-c1\"\u003eSORT_FLAG_CASE\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [1 =\u0026gt; 'b', 0 =\u0026gt; 'C'] because 'C' -\u0026gt; 'c' and 'c' \u0026gt; 'b'\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#asort\"\u003easort()\u003c/a\u003e - Sorts all elements and maintains the key association\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eat()\u003c/h3\u003e\u003ca id=\"user-content-at\" class=\"anchor\" aria-label=\"Permalink: at()\" href=\"#at\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the value at the given position.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function at( int $pos )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e at( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003epos\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$pos\u003c/code\u003e Position of the value in the map\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed�null\u003c/strong\u003e Value at the given position or NULL if no value is available\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe position starts from zero and a position of \"0\" returns the first element\nof the map, \"1\" the second and so on. If the position is negative, the sequence\nwill start from the end of the map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [1, 3, 5] )-\u0026gt;at( 0 );\n// 1\n\nMap::from( [1, 3, 5] )-\u0026gt;at( 1 );\n// 3\n\nMap::from( [1, 3, 5] )-\u0026gt;at( -1 );\n// 5\n\nMap::from( [1, 3, 5] )-\u0026gt;at( 3 );\n// NULL\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eat\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 1\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eat\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 3\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eat\u003c/span\u003e( -\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 5\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eat\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// NULL\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#index\"\u003eindex()\u003c/a\u003e - Returns the numerical index of the given key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pos\"\u003epos()\u003c/a\u003e - Returns the numerical index of the value\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eavg()\u003c/h3\u003e\u003ca id=\"user-content-avg\" class=\"anchor\" aria-label=\"Permalink: avg()\" href=\"#avg\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the average of all integer and float values in the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function avg( $col = null ) : float\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e avg( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecol\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003efloat\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eClosure|string|null\u003c/strong\u003e \u003ccode\u003e$col\u003c/code\u003e Closure, key or path to the values in the nested array or object to compute the average for\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003efloat\u003c/strong\u003e Average of all elements or 0 if there are no elements in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eNon-numeric values will be removed before calculation.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis does also work for multi-dimensional arrays by passing the keys\nof the arrays separated by the delimiter (\"/\" by default), e.g. \"key1/key2/key3\"\nto get \"val\" from \u003ccode\u003e['key1' =\u0026gt; ['key2' =\u0026gt; ['key3' =\u0026gt; 'val']]]\u003c/code\u003e. The same applies to\npublic properties of objects or objects implementing \u003ccode\u003e__isset()\u003c/code\u003e and \u003ccode\u003e__get()\u003c/code\u003e methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [1, 3, 5] )-\u0026gt;avg();\n// 3\n\nMap::from( [1, null, 5] )-\u0026gt;avg();\n// 3\n\nMap::from( [1, 'sum', 5] )-\u0026gt;avg();\n// 2\n\nMap::from( [['p' =\u0026gt; 30], ['p' =\u0026gt; 50], ['p' =\u0026gt; 10]] )-\u0026gt;avg( 'p' );\n// 30\n\nMap::from( [['i' =\u0026gt; ['p' =\u0026gt; 30]], ['i' =\u0026gt; ['p' =\u0026gt; 50]]] )-\u0026gt;avg( 'i/p' );\n// 40\n\nMap::from( [['i' =\u0026gt; ['p' =\u0026gt; 30]], ['i' =\u0026gt; ['p' =\u0026gt; 50]]] )-\u0026gt;avg( fn( $val, $key ) =\u0026gt; $val['i']['p'] ?? null );\n// 40\n\nMap::from( [['p' =\u0026gt; 30], ['p' =\u0026gt; 50], ['p' =\u0026gt; 10]] )-\u0026gt;avg( fn( $val, $key ) =\u0026gt; $key \u0026lt; 1 ? $val : null );\n// 30\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eavg\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 3\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eavg\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 3\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003esum\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eavg\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 2\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eavg\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 30\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e]], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eavg\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei/p\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 40\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e]], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eavg\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e][\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e] ?? \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 40\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eavg\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e \u0026lt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e ? \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e : \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 30\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#count\"\u003ecount()\u003c/a\u003e - Returns the total number of elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#max\"\u003emax()\u003c/a\u003e - Returns the maximum value of all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#min\"\u003emin()\u003c/a\u003e - Returns the minium value of all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#percentage\"\u003epercentage()\u003c/a\u003e - Returns the percentage of all elements passing the test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#sum\"\u003esum()\u003c/a\u003e - Returns the sum of all values in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ebefore()\u003c/h3\u003e\u003ca id=\"user-content-before\" class=\"anchor\" aria-label=\"Permalink: before()\" href=\"#before\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the elements before the given one.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function before( $value ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e before( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|int|string\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Value or function with (item, key) parameters\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with the elements before the given one\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 0] )-\u0026gt;before( 0 );\n// ['a' =\u0026gt; 1]\n\nMap::from( [0 =\u0026gt; 'b', 1 =\u0026gt; 'a'] )-\u0026gt;before( 'a' );\n// [0 =\u0026gt; 'b']\n\nMap::from( [0 =\u0026gt; 'b', 1 =\u0026gt; 'a'] )-\u0026gt;before( 'c' );\n// []\n\nMap::from( ['a', 'c', 'b'] )-\u0026gt;before( function( $item, $key ) {\n return $key \u0026gt;= 1;\n} );\n// [0 =\u0026gt; 'a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebefore\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebefore\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebefore\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebefore\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e \u0026gt;= \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#after\"\u003eafter()\u003c/a\u003e - Returns the elements after the given one\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ebool()\u003c/h3\u003e\u003ca id=\"user-content-bool\" class=\"anchor\" aria-label=\"Permalink: bool()\" href=\"#bool\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns an element by key and casts it to boolean if possible.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function bool( $key, $default = false ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e bool( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edefault\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key or path to the requested item\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$default\u003c/code\u003e Default value if key isn't found (will be casted to bool)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e Value from map or default value\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis does also work to map values from multi-dimensional arrays by passing the keys\nof the arrays separated by the delimiter (\"/\" by default), e.g. \u003ccode\u003ekey1/key2/key3\u003c/code\u003e\nto get \u003ccode\u003eval\u003c/code\u003e from \u003ccode\u003e['key1' =\u0026gt; ['key2' =\u0026gt; ['key3' =\u0026gt; 'val']]]\u003c/code\u003e. The same applies to\npublic properties of objects or objects implementing \u003ccode\u003e__isset()\u003c/code\u003e and \u003ccode\u003e__get()\u003c/code\u003e methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; true] )-\u0026gt;bool( 'a' );\n// true\n\nMap::from( ['a' =\u0026gt; '1'] )-\u0026gt;bool( 'a' );\n// true (casted to boolean)\n\nMap::from( ['a' =\u0026gt; 1.1] )-\u0026gt;bool( 'a' );\n// true (casted to boolean)\n\nMap::from( ['a' =\u0026gt; '10'] )-\u0026gt;bool( 'a' );\n// true (casted to boolean)\n\nMap::from( ['a' =\u0026gt; 'abc'] )-\u0026gt;bool( 'a' );\n// true (casted to boolean)\n\nMap::from( ['a' =\u0026gt; ['b' =\u0026gt; ['c' =\u0026gt; true]]] )-\u0026gt;bool( 'a/b/c' );\n// true\n\nMap::from( [] )-\u0026gt;bool( 'c', function() { return rand( 1, 2 ); } );\n// true (value returned by closure is casted to boolean)\n\nMap::from( [] )-\u0026gt;bool( 'a', true );\n// true (default value used)\n\nMap::from( [] )-\u0026gt;bool( 'a' );\n// false\n\nMap::from( ['b' =\u0026gt; ''] )-\u0026gt;bool( 'b' );\n// false (casted to boolean)\n\nMap::from( ['b' =\u0026gt; null] )-\u0026gt;bool( 'b' );\n// false (null is not scalar)\n\nMap::from( ['b' =\u0026gt; [true]] )-\u0026gt;bool( 'b' );\n// false (arrays are not scalar)\n\nMap::from( ['b' =\u0026gt; '#resource'] )-\u0026gt;bool( 'b' );\n// false (resources are not scalar)\n\nMap::from( ['b' =\u0026gt; new \\stdClass] )-\u0026gt;bool( 'b' );\n// false (objects are not scalar)\n\nMap::from( [] )-\u0026gt;bool( 'c', new \\Exception( 'error' ) );\n// throws exception\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true (casted to boolean)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1.1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true (casted to boolean)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e10\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true (casted to boolean)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true (casted to boolean)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea/b/c\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e() { \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003erand\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e ); } );\n\u003cspan class=\"pl-c\"\u003e// true (value returned by closure is casted to boolean)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true (default value used)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false (casted to boolean)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false (null is not scalar)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false (arrays are not scalar)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e#resource\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false (resources are not scalar)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false (objects are not scalar)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ebool\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003eException\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eerror\u003c/span\u003e'\u003c/span\u003e ) );\n\u003cspan class=\"pl-c\"\u003e// throws exception\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#cast\"\u003ecast()\u003c/a\u003e - Casts all entries to the passed type\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#float\"\u003efloat()\u003c/a\u003e - Returns an element by key and casts it to float if possible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#get\"\u003eget()\u003c/a\u003e - Returns an element from the map by key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#int\"\u003eint()\u003c/a\u003e - Returns an element by key and casts it to integer if possible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#string\"\u003estring()\u003c/a\u003e - Returns an element by key and casts it to string if possible\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ecall()\u003c/h3\u003e\u003ca id=\"user-content-call\" class=\"anchor\" aria-label=\"Permalink: call()\" href=\"#call\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCalls the given method on all items and returns the result.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function call( string $name, array $params = [] ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e call( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ename\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003earray\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eparams\u003c/span\u003e = [] ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$name\u003c/code\u003e Method name\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003earray\u0026lt;mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$params\u003c/code\u003e List of parameters\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with results from all elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis method can call methods on the map entries that are also implemented\nby the map object itself and are therefore not reachable when using the\nmagic \u003ccode\u003e__call()\u003c/code\u003e method. If some entries are not objects, they will be skipped.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys from the original map are preserved in the returned in the new map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$item = new MyClass( ['myprop' =\u0026gt; 'val'] ); // implements methods get() and toArray()\n\nMap::from( [$item, $item] )-\u0026gt;call( 'get', ['myprop'] );\n// ['val', 'val']\n\nMap::from( [$item, $item] )-\u0026gt;call( 'toArray' );\n// [['myprop' =\u0026gt; 'val'], ['myprop' =\u0026gt; 'val']]\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e = \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMyClass\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003emyprop\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eval\u003c/span\u003e'\u003c/span\u003e] ); \u003cspan class=\"pl-c\"\u003e// implements methods get() and toArray()\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecall\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eget\u003c/span\u003e'\u003c/span\u003e, [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003emyprop\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['val', 'val']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecall\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etoArray\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [['myprop' =\u0026gt; 'val'], ['myprop' =\u0026gt; 'val']]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#__call\"\u003e__call()\u003c/a\u003e - Handles dynamic calls to custom methods for the class\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#__callStatic\"\u003e__callStatic()\u003c/a\u003e - Handles static calls to custom methods for the class\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ecast()\u003c/h3\u003e\u003ca id=\"user-content-cast\" class=\"anchor\" aria-label=\"Permalink: cast()\" href=\"#cast\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCasts all entries to the passed type.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function cast( string $type = 'string' ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e cast( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003etype\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estring\u003c/span\u003e'\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$type\u003c/code\u003e Type to cast the values to (\"string\", \"bool\", \"int\", \"float\", \"array\", \"object\")\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map with casted elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eCasting arrays and objects to scalar values won't return anything useful!\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [true, 1, 1.0, 'yes'] )-\u0026gt;cast();\n// ['1', '1', '1.0', 'yes']\n\nMap::from( [true, 1, 1.0, 'yes'] )-\u0026gt;cast( 'bool' );\n// [true, true, true, true]\n\nMap::from( [true, 1, 1.0, 'yes'] )-\u0026gt;cast( 'int' );\n// [1, 1, 1, 0]\n\nMap::from( [true, 1, 1.0, 'yes'] )-\u0026gt;cast( 'float' );\n// [1.0, 1.0, 1.0, 0.0]\n\nMap::from( [new stdClass, new stdClass] )-\u0026gt;cast( 'array' );\n// [[], []]\n\nMap::from( [[], []] )-\u0026gt;cast( 'object' );\n// [new stdClass, new stdClass]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1.0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eyes\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecast\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['1', '1', '1.0', 'yes']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1.0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eyes\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecast\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebool\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [true, true, true, true]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1.0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eyes\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecast\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eint\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [1, 1, 1, 0]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1.0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eyes\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecast\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efloat\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [1.0, 1.0, 1.0, 0.0]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecast\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003earray\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [[], []]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[], []] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecast\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eobject\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [new stdClass, new stdClass]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#bool\"\u003ebool()\u003c/a\u003e - Returns an element by key and casts it to boolean if possible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#int\"\u003eint()\u003c/a\u003e - Returns an element by key and casts it to integer if possible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#float\"\u003efloat()\u003c/a\u003e - Returns an element by key and casts it to float if possible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#string\"\u003estring()\u003c/a\u003e - Returns an element by key and casts it to string if possible\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003echunk()\u003c/h3\u003e\u003ca id=\"user-content-chunk\" class=\"anchor\" aria-label=\"Permalink: chunk()\" href=\"#chunk\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eChunks the map into arrays with the given number of elements.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function chunk( int $size, bool $preserve = false ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e chunk( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003esize\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003epreserve\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$size\u003c/code\u003e Maximum size of the sub-arrays\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$preserve\u003c/code\u003e Preserve keys in new map\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with elements chunked in sub-arrays\u003c/li\u003e\n\u003cli\u003e@throws \u003cstrong\u003e\\InvalidArgumentException\u003c/strong\u003e If size is smaller than 1\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe last chunk may contain less elements than the given number.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe sub-arrays of the returned map are plain PHP arrays. If you need Map\nobjects, then wrap them with \u003ca href=\"#from\"\u003eMap::from()\u003c/a\u003e when you iterate over the map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [0, 1, 2, 3, 4] )-\u0026gt;chunk( 3 );\n// [[0, 1, 2], [3, 4]]\n\nMap::from( ['a' =\u0026gt; 0, 'b' =\u0026gt; 1, 'c' =\u0026gt; 2] )-\u0026gt;chunk( 2 );\n// [['a' =\u0026gt; 0, 'b' =\u0026gt; 1], ['c' =\u0026gt; 2]]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003echunk\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [[0, 1, 2], [3, 4]]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003echunk\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [['a' =\u0026gt; 0, 'b' =\u0026gt; 1], ['c' =\u0026gt; 2]]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#partition\"\u003epartition()\u003c/a\u003e - Breaks the list into the given number of groups\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eclear()\u003c/h3\u003e\u003ca id=\"user-content-clear\" class=\"anchor\" aria-label=\"Permalink: clear()\" href=\"#clear\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRemoves all elements from the current map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function clear() : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e clear() : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [0, 1] )-\u0026gt;clear();\n// internal : []\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eclear\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// internal : []\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#except\"\u003eexcept()\u003c/a\u003e - Returns a new map without the passed element keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#only\"\u003eonly()\u003c/a\u003e - Returns only those elements specified by the keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#reject\"\u003ereject()\u003c/a\u003e - Removes all matched elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#remove\"\u003eremove()\u003c/a\u003e - Removes an element by key\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eclone()\u003c/h3\u003e\u003ca id=\"user-content-clone\" class=\"anchor\" aria-label=\"Permalink: clone()\" href=\"#clone\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eClones the map and all objects within.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function clone() : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e clone() : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with cloned objects\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe objects within the Map are NOT the same as before but new cloned objects.\nThis is different to \u003ca href=\"#copy\"\u003e\u003ccode\u003ecopy()\u003c/code\u003e\u003c/a\u003e, which doesn't clone the objects within.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [new \\stdClass, new \\stdClass] )-\u0026gt;clone();\n// [new \\stdClass, new \\stdClass]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eclone\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [new \\stdClass, new \\stdClass]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#copy\"\u003ecopy()\u003c/a\u003e - Creates a new copy\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ecol()\u003c/h3\u003e\u003ca id=\"user-content-col\" class=\"anchor\" aria-label=\"Permalink: col()\" href=\"#col\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the values of a single column/property from an array of arrays or list of elements in a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function col( string $valuecol = null, string $indexcol = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e col( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evaluecol\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eindexcol\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring|null\u003c/strong\u003e \u003ccode\u003e$valuecol\u003c/code\u003e Name or path of the value property\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring|null\u003c/strong\u003e \u003ccode\u003e$indexcol\u003c/code\u003e Name or path of the index property\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with mapped entries\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eIf $indexcol is omitted, it's value is NULL or not set, the result will be indexed from 0-n.\nItems with the same value for $indexcol will overwrite previous items and only the last one\nwill be part of the resulting map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis does also work to map values from multi-dimensional arrays by passing the keys\nof the arrays separated by the delimiter (\"/\" by default), e.g. \u003ccode\u003ekey1/key2/key3\u003c/code\u003e\nto get \u003ccode\u003eval\u003c/code\u003e from \u003ccode\u003e['key1' =\u0026gt; ['key2' =\u0026gt; ['key3' =\u0026gt; 'val']]]\u003c/code\u003e. The same applies to\npublic properties of objects or objects implementing \u003ccode\u003e__isset()\u003c/code\u003e and \u003ccode\u003e__get()\u003c/code\u003e methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [['id' =\u0026gt; 'i1', 'val' =\u0026gt; 'v1'], ['id' =\u0026gt; 'i2', 'val' =\u0026gt; 'v2']] )-\u0026gt;col( 'val' );\n// ['v1', 'v2']\n\nMap::from( [['id' =\u0026gt; 'i1', 'val' =\u0026gt; 'v1'], ['id' =\u0026gt; 'i2', 'val' =\u0026gt; 'v2']] )-\u0026gt;col( 'val', 'id' );\n// ['i1' =\u0026gt; 'v1', 'i2' =\u0026gt; 'v2']\n\nMap::from( [['id' =\u0026gt; 'i1', 'val' =\u0026gt; 'v1'], ['id' =\u0026gt; 'i2', 'val' =\u0026gt; 'v2']] )-\u0026gt;col( null, 'id' );\n// ['i1' =\u0026gt; ['id' =\u0026gt; 'i1', 'val' =\u0026gt; 'v1'], 'i2' =\u0026gt; ['id' =\u0026gt; 'i2', 'val' =\u0026gt; 'v2']]\n\nMap::from( [['id' =\u0026gt; 'ix', 'val' =\u0026gt; 'v1'], ['id' =\u0026gt; 'ix', 'val' =\u0026gt; 'v2']] )-\u0026gt;col( null, 'id' );\n// ['ix' =\u0026gt; ['id' =\u0026gt; 'ix', 'val' =\u0026gt; 'v2']]\n\nMap::from( [['foo' =\u0026gt; ['bar' =\u0026gt; 'one', 'baz' =\u0026gt; 'two']]] )-\u0026gt;col( 'foo/baz', 'foo/bar' );\n// ['one' =\u0026gt; 'two']\n\nMap::from( [['foo' =\u0026gt; ['bar' =\u0026gt; 'one']]] )-\u0026gt;col( 'foo/baz', 'foo/bar' );\n// ['one' =\u0026gt; null]\n\nMap::from( [['foo' =\u0026gt; ['baz' =\u0026gt; 'two']]] )-\u0026gt;col( 'foo/baz', 'foo/bar' );\n// ['two']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei1\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eval\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ev1\u003c/span\u003e'\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei2\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eval\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ev2\u003c/span\u003e'\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecol\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eval\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['v1', 'v2']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei1\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eval\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ev1\u003c/span\u003e'\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei2\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eval\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ev2\u003c/span\u003e'\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecol\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eval\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['i1' =\u0026gt; 'v1', 'i2' =\u0026gt; 'v2']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei1\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eval\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ev1\u003c/span\u003e'\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei2\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eval\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ev2\u003c/span\u003e'\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecol\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['i1' =\u0026gt; ['id' =\u0026gt; 'i1', 'val' =\u0026gt; 'v1'], 'i2' =\u0026gt; ['id' =\u0026gt; 'i2', 'val' =\u0026gt; 'v2']]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eix\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eval\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ev1\u003c/span\u003e'\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eix\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eval\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ev2\u003c/span\u003e'\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecol\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['ix' =\u0026gt; ['id' =\u0026gt; 'ix', 'val' =\u0026gt; 'v2']]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eone\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etwo\u003c/span\u003e'\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecol\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo/baz\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo/bar\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['one' =\u0026gt; 'two']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eone\u003c/span\u003e'\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecol\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo/baz\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo/bar\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['one' =\u0026gt; null]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etwo\u003c/span\u003e'\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecol\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo/baz\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo/bar\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['two']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#map\"\u003emap()\u003c/a\u003e - Applies a callback to each element and returns the results\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pluck\"\u003epluck()\u003c/a\u003e - Creates a key/value mapping (alias)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pluck\"\u003erekey()\u003c/a\u003e - Changes the keys according to the passed function\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ecollapse()\u003c/h3\u003e\u003ca id=\"user-content-collapse\" class=\"anchor\" aria-label=\"Permalink: collapse()\" href=\"#collapse\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCollapses all sub-array elements recursively to a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function collapse( int $depth = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e collapse( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edepth\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|null\u003c/strong\u003e \u003ccode\u003e$depth\u003c/code\u003e Number of levels to collapse for multi-dimensional arrays or NULL for all\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with all sub-array elements added into it recursively, up to the specified depth\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved and already existing elements will be overwritten. This\nis also true for numeric keys! This method is similar than \u003ca href=\"#flat\"\u003eflat()\u003c/a\u003e but replaces\nalready existing elements.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eA value smaller than 1 for depth will return the same map elements. Collapsing\ndoes also work if elements implement the \"Traversable\" interface (which the Map\nobject does).\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [0 =\u0026gt; ['a' =\u0026gt; 0, 'b' =\u0026gt; 1], 1 =\u0026gt; ['c' =\u0026gt; 2, 'd' =\u0026gt; 3]] )-\u0026gt;collapse();\n// ['a' =\u0026gt; 0, 'b' =\u0026gt; 1, 'c' =\u0026gt; 2, 'd' =\u0026gt; 3]\n\nMap::from( [0 =\u0026gt; ['a' =\u0026gt; 0, 'b' =\u0026gt; 1], 1 =\u0026gt; ['a' =\u0026gt; 2]] )-\u0026gt;collapse();\n// ['a' =\u0026gt; 2, 'b' =\u0026gt; 1]\n\nMap::from( [0 =\u0026gt; [0 =\u0026gt; 0, 1 =\u0026gt; 1], 1 =\u0026gt; [0 =\u0026gt; ['a' =\u0026gt; 2, 0 =\u0026gt; 3], 1 =\u0026gt; 4]] )-\u0026gt;collapse();\n// [0 =\u0026gt; 3, 1 =\u0026gt; 4, 'a' =\u0026gt; 2]\n\nMap::from( [0 =\u0026gt; [0 =\u0026gt; 0, 'a' =\u0026gt; 1], 1 =\u0026gt; [0 =\u0026gt; ['b' =\u0026gt; 2, 0 =\u0026gt; 3], 1 =\u0026gt; 4]] )-\u0026gt;collapse( 1 );\n// [0 =\u0026gt; ['b' =\u0026gt; 2, 0 =\u0026gt; 3], 1 =\u0026gt; 4, 'a' =\u0026gt; 1]\n\nMap::from( [0 =\u0026gt; [0 =\u0026gt; 0, 'a' =\u0026gt; 1], 1 =\u0026gt; Map::from( [0 =\u0026gt; ['b' =\u0026gt; 2, 0 =\u0026gt; 3], 1 =\u0026gt; 4] )] )-\u0026gt;collapse();\n// [0 =\u0026gt; 3, 'a' =\u0026gt; 1, 'b' =\u0026gt; 2, 1 =\u0026gt; 4]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecollapse\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 0, 'b' =\u0026gt; 1, 'c' =\u0026gt; 2, 'd' =\u0026gt; 3]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecollapse\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 2, 'b' =\u0026gt; 1]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecollapse\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 3, 1 =\u0026gt; 4, 'a' =\u0026gt; 2]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecollapse\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; ['b' =\u0026gt; 2, 0 =\u0026gt; 3], 1 =\u0026gt; 4, 'a' =\u0026gt; 1]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecollapse\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 3, 'a' =\u0026gt; 1, 'b' =\u0026gt; 2, 1 =\u0026gt; 4]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#flat\"\u003eflat()\u003c/a\u003e - Flattens multi-dimensional elements without overwriting elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ecombine()\u003c/h3\u003e\u003ca id=\"user-content-combine\" class=\"anchor\" aria-label=\"Permalink: combine()\" href=\"#combine\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCombines the values of the map as keys with the passed elements as values.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function combine( iterable $values ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e combine( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalues\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$values\u003c/code\u003e Values of the new map\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['name', 'age'] )-\u0026gt;combine( ['Tom', 29] );\n// ['name' =\u0026gt; 'Tom', 'age' =\u0026gt; 29]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eage\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecombine\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eTom\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e29\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['name' =\u0026gt; 'Tom', 'age' =\u0026gt; 29]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#zip\"\u003ezip()\u003c/a\u003e - Merges the values of all arrays at the corresponding index\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003econcat()\u003c/h3\u003e\u003ca id=\"user-content-concat\" class=\"anchor\" aria-label=\"Permalink: concat()\" href=\"#concat\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003ePushs all of the given elements onto the map without creating a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function concat( iterable $elements ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e concat( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$elements\u003c/code\u003e List of elements\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys of the passed elements are NOT preserved!\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['foo'] )-\u0026gt;concat( ['bar'] );\n// ['foo', 'bar']\n\nMap::from( ['foo'] )-\u0026gt;concat( new Map( ['bar' =\u0026gt; 'baz'] ) );\n// ['foo', 'baz']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003econcat\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['foo', 'bar']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003econcat\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e] ) );\n\u003cspan class=\"pl-c\"\u003e// ['foo', 'baz']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#merge\"\u003emerge()\u003c/a\u003e - Merges the map with the given elements without returning a new map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#union\"\u003eunion()\u003c/a\u003e - Builds a union of the elements and the given elements without returning a new map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003econtains()\u003c/h3\u003e\u003ca id=\"user-content-contains\" class=\"anchor\" aria-label=\"Permalink: contains()\" href=\"#contains\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eDetermines if an item exists in the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function contains( $key, string $operator = null, $value = null ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e contains( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoperator\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThis method combines the power of the \u003ccode\u003ewhere()\u003c/code\u003e method with \u003ccode\u003esome()\u003c/code\u003e to check\nif the map contains at least one of the passed values or conditions.\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|iterable|mixed\u003c/strong\u003e \u003ccode\u003e$values\u003c/code\u003e Anonymous function with (item, key) parameter, element or list of elements to test against\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring|null\u003c/strong\u003e \u003ccode\u003e$op\u003c/code\u003e Operator used for comparison\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Value used for comparison\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if at least one element is available in map, FALSE if the map contains none of them\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eCheck the \u003ca href=\"#where\"\u003e\u003ccode\u003ewhere()\u003c/code\u003e\u003c/a\u003e] method for available operators.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;contains( 'a' );\n// true\n\nMap::from( ['a', 'b'] )-\u0026gt;contains( ['a', 'c'] );\n// true\n\nMap::from( ['a', 'b'] )-\u0026gt;contains( function( $item, $key ) {\n return $item === 'a'\n} );\n// true\n\nMap::from( [['type' =\u0026gt; 'name']] )-\u0026gt;contains( 'type', 'name' );\n// true\n\nMap::from( [['type' =\u0026gt; 'name']] )-\u0026gt;contains( 'type', '!=', 'name' );\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003econtains\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003econtains\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;contains( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e === \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e\n} );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etype\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003econtains\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etype\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etype\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003econtains\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etype\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e!=\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#in\"\u003ein()\u003c/a\u003e - Tests if element is included\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#includes\"\u003eincludes()\u003c/a\u003e - Tests if element is included\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#where\"\u003ewhere()\u003c/a\u003e - Filters the list of elements by a given condition\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ecopy()\u003c/h3\u003e\u003ca id=\"user-content-copy\" class=\"anchor\" aria-label=\"Permalink: copy()\" href=\"#copy\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCreates a new map with the same elements.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function copy() : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e copy() : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eBoth maps share the same array until one of the map objects modifies the\narray. Then, the array is copied and the copy is modfied (copy on write).\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$m = Map::from( ['foo', 'bar'] );\n\n$m2 = $m-\u0026gt;copy();\n// internal: ['foo', 'bar'] both two maps\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003em\u003c/span\u003e = Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] );\n\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003em2\u003c/span\u003e = \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003em\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003ecopy\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// internal: ['foo', 'bar'] both two maps\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#clone\"\u003eclone()\u003c/a\u003e - Clones the map and all objects within\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ecount()\u003c/h3\u003e\u003ca id=\"user-content-count\" class=\"anchor\" aria-label=\"Permalink: count()\" href=\"#count\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCounts the number of elements in the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function count() : int\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e count() : \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003eint\u003c/strong\u003e Number of elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['foo', 'bar'] )-\u0026gt;count();\n// 2\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecount\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 2\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#avg\"\u003eavg()\u003c/a\u003e - Returns the average of all integer and float values in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#countby\"\u003ecountBy()\u003c/a\u003e - Counts how often the same values are in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#max\"\u003emax()\u003c/a\u003e - Returns the maximum value of all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#min\"\u003emin()\u003c/a\u003e - Returns the minium value of all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#percentage\"\u003epercentage()\u003c/a\u003e - Returns the percentage of all elements passing the test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#sum\"\u003esum()\u003c/a\u003e - Returns the sum of all values in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ecountBy()\u003c/h3\u003e\u003ca id=\"user-content-countby\" class=\"anchor\" aria-label=\"Permalink: countBy()\" href=\"#countby\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCounts how often the same values are in the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function countBy( $col = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e countBy( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecol\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|string|null\u003c/strong\u003e \u003ccode\u003e$col\u003c/code\u003e Key as \"key1/key2/key3\" or closure with (value, key) parameters returning the values for counting\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with values as keys and their count as value\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis does also work for multi-dimensional arrays by passing the keys\nof the arrays separated by the delimiter (\"/\" by default), e.g. \"key1/key2/key3\"\nto get \"val\" from ['key1' =\u0026gt; ['key2' =\u0026gt; ['key3' =\u0026gt; 'val']]]. The same applies to\npublic properties of objects or objects implementing __isset() and __get() methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [1, 'foo', 2, 'foo', 1] )-\u0026gt;countBy();\n// [1 =\u0026gt; 2, 'foo' =\u0026gt; 2, 2 =\u0026gt; 1]\n\nMap::from( [1.11, 3.33, 3.33, 9.99] )-\u0026gt;countBy();\n// ['1.11' =\u0026gt; 1, '3.33' =\u0026gt; 2, '9.99' =\u0026gt; 1]\n\nMap::from( [['i' =\u0026gt; ['p' =\u0026gt; 1.11]], ['i' =\u0026gt; ['p' =\u0026gt; 3.33]], ['i' =\u0026gt; ['p' =\u0026gt; 3.33]]] )-\u0026gt;countBy( 'i/p' );\n// ['1.11' =\u0026gt; 1, '3.33' =\u0026gt; 2]\n\nMap::from( ['a@gmail.com', 'b@yahoo.com', 'c@gmail.com'] )-\u0026gt;countBy( function( $email ) {\n return substr( strrchr( $email, '@' ), 1 );\n} );\n// ['gmail.com' =\u0026gt; 2, 'yahoo.com' =\u0026gt; 1]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecountBy\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [1 =\u0026gt; 2, 'foo' =\u0026gt; 2, 2 =\u0026gt; 1]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1.11\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3.33\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3.33\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e9.99\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecountBy\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['1.11' =\u0026gt; 1, '3.33' =\u0026gt; 2, '9.99' =\u0026gt; 1]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1.11\u003c/span\u003e]], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3.33\u003c/span\u003e]], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3.33\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecountBy\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei/p\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['1.11' =\u0026gt; 1, '3.33' =\u0026gt; 2]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea@gmail.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb@yahoo.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec@gmail.com\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ecountBy\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eemail\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003esubstr\u003c/span\u003e( \u003cspan class=\"pl-en\"\u003estrrchr\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eemail\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e@\u003c/span\u003e'\u003c/span\u003e ), \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['gmail.com' =\u0026gt; 2, 'yahoo.com' =\u0026gt; 1]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#avg\"\u003eavg()\u003c/a\u003e - Returns the average of all integer and float values in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#groupby\"\u003egroupBy()\u003c/a\u003e - Groups associative array elements or objects by the passed key or closure\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#max\"\u003emax()\u003c/a\u003e - Returns the maximum value of all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#min\"\u003emin()\u003c/a\u003e - Returns the minium value of all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#percentage\"\u003epercentage()\u003c/a\u003e - Returns the percentage of all elements passing the test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#sum\"\u003esum()\u003c/a\u003e - Returns the sum of all values in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003edd()\u003c/h3\u003e\u003ca id=\"user-content-dd\" class=\"anchor\" aria-label=\"Permalink: dd()\" href=\"#dd\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eDumps the map content and terminates the script.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function dd( callable $callback = null ) : void\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e dd( \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003evoid\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable|null\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function receiving the map elements as parameter (optional)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe \u003ccode\u003edd()\u003c/code\u003e method is very helpful to see what are the map elements passed\nbetween two map methods in a method call chain. It stops execution of the\nscript afterwards to avoid further output.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar'] )-\u0026gt;sort()-\u0026gt;dd()-\u0026gt;first();\n/*\nArray\n(\n [0] =\u0026gt; bar\n [1] =\u0026gt; foo\n)\n*/\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esort\u003c/span\u003e()-\u0026gt;\u003cspan class=\"pl-en\"\u003edd\u003c/span\u003e()-\u0026gt;\u003cspan class=\"pl-en\"\u003efirst\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003eArray\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e(\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e [0] =\u0026gt; bar\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e [1] =\u0026gt; foo\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e)\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe \u003ccode\u003efirst()\u003c/code\u003e method isn't executed at all.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003edelimiter()\u003c/h3\u003e\u003ca id=\"user-content-delimiter\" class=\"anchor\" aria-label=\"Permalink: delimiter()\" href=\"#delimiter\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSets or returns the seperator for paths to values in multi-dimensional arrays or objects.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public static function delimiter( ?string $char = null ) : string\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003estatic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e delimiter( ?\u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003echar\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$char\u003c/code\u003e Separator character, e.g. \".\" for \"key.to.value\" instaed of \"key/to/value\"\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003estring\u003c/strong\u003e Separator used up to now\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe static method only changes the separator for new maps created afterwards.\nAlready existing maps will continue to use the previous separator. To change\nthe separator of an existing map, use the \u003ca href=\"#sep\"\u003esep()\u003c/a\u003e method instead.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::delimiter( '.' );\n// '/'\n\nMap::from( ['foo' =\u0026gt; ['bar' =\u0026gt; 'baz']] )-\u0026gt;get( 'foo.bar' );\n// 'baz'\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003edelimiter\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// '/'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eget\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo.bar\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'baz'\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#sep\"\u003esep()\u003c/a\u003e - Sets the seperator for paths to values in multi-dimensional arrays or objects\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ediff()\u003c/h3\u003e\u003ca id=\"user-content-diff\" class=\"anchor\" aria-label=\"Permalink: diff()\" href=\"#diff\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the keys/values in the map whose values are not present in the passed elements in a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function diff( iterable $elements, callable $callback = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e diff( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$elements\u003c/code\u003e List of elements\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable|null\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (valueA, valueB) parameters and returns -1 (\u0026lt;), 0 (=) and 1 (\u0026gt;)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar'] )-\u0026gt;diff( ['bar'] );\n// ['a' =\u0026gt; 'foo']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ediff\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 'foo']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf a callback is passed, the given function will be used to compare the values.\nThe function must accept two parameters (value A and B) and must return\n-1 if value A is smaller than value B, 0 if both are equal and 1 if value A is\ngreater than value B. Both, a method name and an anonymous function can be passed:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [0 =\u0026gt; 'a'] )-\u0026gt;diff( [0 =\u0026gt; 'A'], 'strcasecmp' );\n// []\n\nMap::from( ['b' =\u0026gt; 'a'] )-\u0026gt;diff( ['B' =\u0026gt; 'A'], 'strcasecmp' );\n// []\n\nMap::from( ['b' =\u0026gt; 'a'] )-\u0026gt;diff( ['c' =\u0026gt; 'A'], function( $valA, $valB ) {\n return strtolower( $valA ) \u0026lt;=\u0026gt; strtolower( $valB );\n} );\n// []\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ediff\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ediff\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ediff\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalA\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalB\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalA\u003c/span\u003e ) \u0026lt;=\u0026gt; \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalB\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eAll examples will return an empty map because both contain the same values\nwhen compared case insensitive.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#diffassoc\"\u003ediffAssoc()\u003c/a\u003e - Returns the keys/values in the map whose keys AND values are not present in the passed elements in a new map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#diffkeys\"\u003ediffKeys()\u003c/a\u003e - Returns the elements missing in the given list by keys\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ediffAssoc()\u003c/h3\u003e\u003ca id=\"user-content-diffassoc\" class=\"anchor\" aria-label=\"Permalink: diffAssoc()\" href=\"#diffassoc\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the keys/values in the map whose keys AND values are not present in the passed elements in a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function diffAssoc( iterable $elements, callable $callback = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e diffAssoc( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$elements\u003c/code\u003e List of elements\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable|null\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (valueA, valueB) parameters and returns -1 (\u0026lt;), 0 (=) and 1 (\u0026gt;)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar'] )-\u0026gt;diffAssoc( new Map( ['foo', 'b' =\u0026gt; 'bar'] ) );\n// ['a' =\u0026gt; 'foo']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ediffAssoc\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] ) );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 'foo']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf a callback is passed, the given function will be used to compare the values.\nThe function must accept two parameters (valA, valB) and must return\n-1 if value A is smaller than value B, 0 if both are equal and 1 if value A is\ngreater than value B. Both, a method name and an anonymous function can be passed:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [0 =\u0026gt; 'a'] )-\u0026gt;diffAssoc( [0 =\u0026gt; 'A'], 'strcasecmp' );\n// []\n\nMap::from( ['b' =\u0026gt; 'a'] )-\u0026gt;diffAssoc( ['B' =\u0026gt; 'A'], 'strcasecmp' );\n// []\n\nMap::from( ['b' =\u0026gt; 'a'] )-\u0026gt;diffAssoc( ['c' =\u0026gt; 'A'], function( $valA, $valB ) {\n return strtolower( $valA ) \u0026lt;=\u0026gt; strtolower( $valB );\n} );\n// ['b' =\u0026gt; 'a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ediffAssoc\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ediffAssoc\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ediffAssoc\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalA\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalB\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalA\u003c/span\u003e ) \u0026lt;=\u0026gt; \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalB\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['b' =\u0026gt; 'a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe first and second example will return an empty map because both contain the\nsame values when compared case insensitive. In the third example, the keys doesn't\nmatch (\"b\" vs. \"c\").\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#diff\"\u003ediff()\u003c/a\u003e - Returns the keys/values in the map whose values are not present in the passed elements in a new map\na new map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#diffkeys\"\u003ediffKeys()\u003c/a\u003e - Returns the elements missing in the given list by keys\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ediffKeys()\u003c/h3\u003e\u003ca id=\"user-content-diffkeys\" class=\"anchor\" aria-label=\"Permalink: diffKeys()\" href=\"#diffkeys\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the key/value pairs from the map whose keys are not present in the passed elements in a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function diffKeys( iterable $elements, callable $callback = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e diffKeys( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$elements\u003c/code\u003e List of elements\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable|null\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (keyA, keyB) parameters and returns -1 (\u0026lt;), 0 (=) and 1 (\u0026gt;)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar'] )-\u0026gt;diffKeys( new Map( ['foo', 'b' =\u0026gt; 'baz'] ) );\n// ['a' =\u0026gt; 'foo']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ediffKeys\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e] ) );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 'foo']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf a callback is passed, the given function will be used to compare the keys.\nThe function must accept two parameters (key A and B) and must return\n-1 if key A is smaller than key B, 0 if both are equal and 1 if key A is\ngreater than key B. Both, a method name and an anonymous function can be passed:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [0 =\u0026gt; 'a'] )-\u0026gt;diffKeys( [0 =\u0026gt; 'A'], 'strcasecmp' );\n// []\n\nMap::from( ['b' =\u0026gt; 'a'] )-\u0026gt;diffKeys( ['B' =\u0026gt; 'X'], 'strcasecmp' );\n// []\n\nMap::from( ['b' =\u0026gt; 'a'] )-\u0026gt;diffKeys( ['c' =\u0026gt; 'a'], function( $keyA, $keyB ) {\n return strtolower( $keyA ) \u0026lt;=\u0026gt; strtolower( $keyB );\n} );\n// ['b' =\u0026gt; 'a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ediffKeys\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ediffKeys\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eX\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ediffKeys\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyA\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyB\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyA\u003c/span\u003e ) \u0026lt;=\u0026gt; \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyB\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['b' =\u0026gt; 'a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe first and second example will return an empty map because both contain\nthe same keys when compared case insensitive. The third example will return\n['b' =\u0026gt; 'a'] because the keys doesn't match (\"b\" vs. \"c\").\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#diff\"\u003ediff()\u003c/a\u003e - Returns the keys/values in the map whose values are not present in the passed elements in a new map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#diffassoc\"\u003ediffAssoc()\u003c/a\u003e - Returns the keys/values in the map whose keys AND values are not present in the passed elements in a new map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003edump()\u003c/h3\u003e\u003ca id=\"user-content-dump\" class=\"anchor\" aria-label=\"Permalink: dump()\" href=\"#dump\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eDumps the map content using the given function (print_r by default).\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function dump( callable $callback = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e dump( \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable|null\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function receiving the map elements as parameter (optional)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Same map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe \u003ccode\u003edump()\u003c/code\u003e method is very helpful to see what are the map elements passed\nbetween two map methods in a method call chain.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar'] )-\u0026gt;dump()-\u0026gt;asort()-\u0026gt;dump( 'var_dump' );\n/*\nArray\n(\n [a] =\u0026gt; foo\n [b] =\u0026gt; bar\n)\n\narray(1) {\n [\u0026quot;b\u0026quot;]=\u0026gt;\n string(3) \u0026quot;bar\u0026quot;\n [\u0026quot;a\u0026quot;]=\u0026gt;\n string(3) \u0026quot;foo\u0026quot;\n}\n*/\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003edump\u003c/span\u003e()-\u0026gt;\u003cspan class=\"pl-en\"\u003easort\u003c/span\u003e()-\u0026gt;\u003cspan class=\"pl-en\"\u003edump\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003evar_dump\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003eArray\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e(\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e [a] =\u0026gt; foo\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e [b] =\u0026gt; bar\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e)\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003earray(1) {\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e [\"b\"]=\u0026gt;\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e string(3) \"bar\"\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e [\"a\"]=\u0026gt;\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e string(3) \"foo\"\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e}\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eduplicates()\u003c/h3\u003e\u003ca id=\"user-content-duplicates\" class=\"anchor\" aria-label=\"Permalink: duplicates()\" href=\"#duplicates\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the duplicate values from the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function duplicates( $col = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e duplicates( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecol\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|string|null\u003c/strong\u003e \u003ccode\u003e$col\u003c/code\u003e Key, path of the nested array or anonymous function with ($item, $key) parameters returning the value for comparison\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eFor nested arrays, you have to pass the name of the column of the nested array which\nshould be used to check for duplicates.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis does also work to map values from multi-dimensional arrays by passing the keys\nof the arrays separated by the delimiter (\"/\" by default), e.g. \u003ccode\u003ekey1/key2/key3\u003c/code\u003e\nto get \u003ccode\u003eval\u003c/code\u003e from \u003ccode\u003e['key1' =\u0026gt; ['key2' =\u0026gt; ['key3' =\u0026gt; 'val']]]\u003c/code\u003e. The same applies to\npublic properties of objects or objects implementing \u003ccode\u003e__isset()\u003c/code\u003e and \u003ccode\u003e__get()\u003c/code\u003e methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys in the result map are preserved.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [1, 2, '1', 3] )-\u0026gt;duplicates()\n// [2 =\u0026gt; '1']\n\nMap::from( [['p' =\u0026gt; '1'], ['p' =\u0026gt; 1], ['p' =\u0026gt; 2]] )-\u0026gt;duplicates( 'p' )\n// [1 =\u0026gt; ['p' =\u0026gt; 1]]\n\nMap::from( [['i' =\u0026gt; ['p' =\u0026gt; '1']], ['i' =\u0026gt; ['p' =\u0026gt; 1]]] )-\u0026gt;duplicates( 'i/p' )\n// [1 =\u0026gt; ['i' =\u0026gt; ['p' =\u0026gt; 1]]]\n\nMap::from( [['i' =\u0026gt; ['p' =\u0026gt; '1']], ['i' =\u0026gt; ['p' =\u0026gt; 1]]] )-\u0026gt;unique( fn( $item, $key ) =\u0026gt; $item['i']['p'] );\n// [1 =\u0026gt; ['i' =\u0026gt; ['p' =\u0026gt; 1]]]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eduplicates\u003c/span\u003e()\n\u003cspan class=\"pl-c\"\u003e// [2 =\u0026gt; '1']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1\u003c/span\u003e'\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eduplicates\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e )\n\u003cspan class=\"pl-c\"\u003e// [1 =\u0026gt; ['p' =\u0026gt; 1]]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1\u003c/span\u003e'\u003c/span\u003e]], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eduplicates\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei/p\u003c/span\u003e'\u003c/span\u003e )\n\u003cspan class=\"pl-c\"\u003e// [1 =\u0026gt; ['i' =\u0026gt; ['p' =\u0026gt; 1]]]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1\u003c/span\u003e'\u003c/span\u003e]], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eunique\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e][\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// [1 =\u0026gt; ['i' =\u0026gt; ['p' =\u0026gt; 1]]]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#reject\"\u003ereject()\u003c/a\u003e - Removes all matched elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#unique\"\u003eunique()\u003c/a\u003e - Returns only unique elements from the map in a new map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eeach()\u003c/h3\u003e\u003ca id=\"user-content-each\" class=\"anchor\" aria-label=\"Permalink: each()\" href=\"#each\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eExecutes a callback over each entry until FALSE is returned.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function each( \\Closure $callback ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e each( \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (value, key) parameters and returns TRUE/FALSE\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Same map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$result = [];\nMap::from( [0 =\u0026gt; 'a', 1 =\u0026gt; 'b'] )-\u0026gt;each( function( $value, $key ) use ( \u0026amp;$result ) {\n $result[$key] = strtoupper( $value );\n return false;\n} );\n// $result = [0 =\u0026gt; 'A']\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eresult\u003c/span\u003e = [];\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eeach\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) \u003cspan class=\"pl-k\"\u003euse\u003c/span\u003e ( \u0026amp;\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eresult\u003c/span\u003e ) {\n \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eresult\u003c/span\u003e[\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e] = \u003cspan class=\"pl-en\"\u003estrtoupper\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e );\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// $result = [0 =\u0026gt; 'A']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe \u003ccode\u003e$result\u003c/code\u003e array will contain \u003ccode\u003e[0 =\u0026gt; 'A']\u003c/code\u003e because FALSE is returned\nafter the first entry and all other entries are then skipped.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eempty()\u003c/h3\u003e\u003ca id=\"user-content-empty\" class=\"anchor\" aria-label=\"Permalink: empty()\" href=\"#empty\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eDetermines if the map is empty or not.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function empty() : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e empty() : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if map is empty, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe method is equivalent to isEmpty().\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [] )-\u0026gt;empty();\n// true\n\nMap::from( ['a'] )-\u0026gt;empty();\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eempty\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eempty\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#isempty\"\u003eisEmpty()\u003c/a\u003e - Determines if the map is empty or not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eequals()\u003c/h3\u003e\u003ca id=\"user-content-equals\" class=\"anchor\" aria-label=\"Permalink: equals()\" href=\"#equals\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if the passed elements are equal to the elements in the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function equals( iterable $elements ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e equals( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$elements\u003c/code\u003e List of elements to test against\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if both are equal, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe method differs to \u003ca href=\"#is\"\u003eis()\u003c/a\u003e in the fact that it doesn't care about the keys\nby default. The elements are only loosely compared and the keys are ignored.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eValues are compared by their string values:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"(string) $item1 === (string) $item2\"\u003e\u003cpre\u003e(\u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e) \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem1\u003c/span\u003e === (\u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e) \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem2\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a'] )-\u0026gt;equals( ['a', 'b'] );\n// false\n\nMap::from( ['a', 'b'] )-\u0026gt;equals( ['b'] );\n// false\n\nMap::from( ['a', 'b'] )-\u0026gt;equals( ['b', 'a'] );\n// true\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eequals\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eequals\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eequals\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#is\"\u003eis()\u003c/a\u003e - Tests if the map consists of the same keys and values\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eevery()\u003c/h3\u003e\u003ca id=\"user-content-every\" class=\"anchor\" aria-label=\"Permalink: every()\" href=\"#every\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eVerifies that all elements pass the test of the given callback.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function every( \\Closure $callback ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e every( \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (value, key) parameters and returns TRUE/FALSE\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e True if all elements pass the test, false if if fails for at least one element\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [0 =\u0026gt; 'a', 1 =\u0026gt; 'b'] )-\u0026gt;every( function( $value, $key ) {\n return is_string( $value );\n} );\n// true\n\nMap::from( [0 =\u0026gt; 'a', 1 =\u0026gt; 100] )-\u0026gt;every( function( $value, $key ) {\n return is_string( $value );\n} );\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eevery\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003eis_string\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e100\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eevery\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003eis_string\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#some\"\u003esome()\u003c/a\u003e - Tests if at least one element passes the test or is part of the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#any\"\u003eany()\u003c/a\u003e - Tests if at least one element satisfies the callback function\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eexcept()\u003c/h3\u003e\u003ca id=\"user-content-except\" class=\"anchor\" aria-label=\"Permalink: except()\" href=\"#except\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns a new map without the passed element keys.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function except( $keys ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e except( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeys\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string\u0026gt;|array\u0026lt;int|string\u0026gt;|string|int\u003c/strong\u003e \u003ccode\u003e$keys\u003c/code\u003e List of keys to remove\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys in the result map are preserved.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 2, 'c' =\u0026gt; 3] )-\u0026gt;except( 'b' );\n// ['a' =\u0026gt; 1, 'c' =\u0026gt; 3]\n\nMap::from( [1 =\u0026gt; 'a', 2 =\u0026gt; 'b', 3 =\u0026gt; 'c'] )-\u0026gt;except( [1, 3] );\n// [2 =\u0026gt; 'b']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eexcept\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'c' =\u0026gt; 3]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eexcept\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// [2 =\u0026gt; 'b']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#clear\"\u003eclear()\u003c/a\u003e - Removes all elements from the current map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#only\"\u003eonly()\u003c/a\u003e - Returns only those elements specified by the keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#reject\"\u003ereject()\u003c/a\u003e - Removes all matched elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#remove\"\u003eremove()\u003c/a\u003e - Removes an element by key\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eexplode()\u003c/h3\u003e\u003ca id=\"user-content-explode\" class=\"anchor\" aria-label=\"Permalink: explode()\" href=\"#explode\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCreates a new map with the string splitted by the delimiter.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public static function explode( string $delimiter , string $string , int $limit = PHP_INT_MAX ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003estatic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e explode( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edelimiter\u003c/span\u003e , \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003estring\u003c/span\u003e , \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elimit\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003ePHP_INT_MAX\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$delimiter\u003c/code\u003e Delimiter character, string or empty string\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$string\u003c/code\u003e String to split\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$limit\u003c/code\u003e Maximum number of element with the last element containing the rest of the string\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with splitted parts\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eA limit of \"0\" is treated the same as \"1\". If limit is negative, the rest of\nthe string is dropped and not part of the returned map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis method creates a lazy Map and the string is split after calling\nanother method that operates on the Map contents.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::explode( ',', 'a,b,c' );\n// ['a', 'b', 'c']\n\nMap::explode( '\u0026lt;--\u0026gt;', 'a a\u0026lt;--\u0026gt;b b\u0026lt;--\u0026gt;c c' );\n// ['a a', 'b b', 'c c']\n\nMap::explode( '', 'string' );\n// ['s', 't', 'r', 'i', 'n', 'g']\n\nMap::explode( '|', 'a|b|c', 2 );\n// ['a', 'b|c']\n\nMap::explode( '', 'string', 2 );\n// ['s', 't', 'ring']\n\nMap::explode( '|', 'a|b|c|d', -2 );\n// ['a', 'b']\n\nMap::explode( '', 'string', -3 );\n// ['s', 't', 'r']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003eexplode\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e,\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea,b,c\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a', 'b', 'c']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003eexplode\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e\u0026lt;--\u0026gt;\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea a\u0026lt;--\u0026gt;b b\u0026lt;--\u0026gt;c c\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a a', 'b b', 'c c']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003eexplode\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estring\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['s', 't', 'r', 'i', 'n', 'g']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003eexplode\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e|\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea|b|c\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a', 'b|c']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003eexplode\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estring\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['s', 't', 'ring']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003eexplode\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e|\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea|b|c|d\u003c/span\u003e'\u003c/span\u003e, -\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a', 'b']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003eexplode\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estring\u003c/span\u003e'\u003c/span\u003e, -\u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['s', 't', 'r']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003efill()\u003c/h3\u003e\u003ca id=\"user-content-fill\" class=\"anchor\" aria-label=\"Permalink: fill()\" href=\"#fill\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCreates a new map filled with given value.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public static function fill( int $num, $value, int $start = 0 ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003estatic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e fill( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003enum\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003estart\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$num\u003c/code\u003e Number of elements to create\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Value to fill the map with\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$start\u003c/code\u003e Start index for the elements\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with filled elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::fill( 3, 'a' );\n// [0 =\u0026gt; 'a', 1 =\u0026gt; 'a', 2 =\u0026gt; 'a']\n\nMap::fill( 3, 'a', 2 );\n// [2 =\u0026gt; 'a', 3 =\u0026gt; 'a', 4 =\u0026gt; 'a']\n\nMap::fill( 3, 'a', -2 );\n// [-2 =\u0026gt; 'a', -1 =\u0026gt; 'a', 0 =\u0026gt; 'a'] (PHP 8)\n// [-2 =\u0026gt; 'a', 0 =\u0026gt; 'a', 1 =\u0026gt; 'a'] (PHP 7)\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efill\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'a', 1 =\u0026gt; 'a', 2 =\u0026gt; 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efill\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [2 =\u0026gt; 'a', 3 =\u0026gt; 'a', 4 =\u0026gt; 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efill\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, -\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [-2 =\u0026gt; 'a', -1 =\u0026gt; 'a', 0 =\u0026gt; 'a'] (PHP 8)\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e// [-2 =\u0026gt; 'a', 0 =\u0026gt; 'a', 1 =\u0026gt; 'a'] (PHP 7)\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003efilter()\u003c/h3\u003e\u003ca id=\"user-content-filter\" class=\"anchor\" aria-label=\"Permalink: filter()\" href=\"#filter\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRuns a filter over each element of the map and returns a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function filter( callable $callback = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e filter( \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable|null\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (item, key) parameters and returns TRUE/FALSE\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eIf no callback is passed, all values which are empty, null or false will be\nremoved if their value converted to boolean is FALSE:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"(bool) $value === false\"\u003e\u003cpre\u003e(\u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e) \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e === \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe keys in the result map are preserved.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [null, 0, 1, '', '0', 'a'] )-\u0026gt;filter();\n// [1, 'a']\n\nMap::from( [2 =\u0026gt; 'a', 6 =\u0026gt; 'b', 13 =\u0026gt; 'm', 30 =\u0026gt; 'z'] )-\u0026gt;filter( function( $value, $key ) {\n return $key \u0026lt; 10 \u0026amp;\u0026amp; $value \u0026lt; 'n';\n} );\n// ['a', 'b']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e0\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efilter\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [1, 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e6\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e13\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003em\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ez\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efilter\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e \u0026lt; \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e \u0026amp;\u0026amp; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e \u0026lt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en\u003c/span\u003e'\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// ['a', 'b']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#grep\"\u003egrep()\u003c/a\u003e - Applies a regular expression to all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#where\"\u003ewhere()\u003c/a\u003e - Filters the list of elements by a given condition\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003efind()\u003c/h3\u003e\u003ca id=\"user-content-find\" class=\"anchor\" aria-label=\"Permalink: find()\" href=\"#find\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the first matching element where the callback returns TRUE.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function find( \\Closure $callback, $default = null, bool $reverse = false )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e find( \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edefault\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ereverse\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (value, key) parameters and returns TRUE/FALSE\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$default\u003c/code\u003e Default value, closure or exception if the callback only returns FALSE\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$reverse\u003c/code\u003e TRUE to test elements from back to front, FALSE for front to back (default)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed|null\u003c/strong\u003e First matching value, passed default value or an exception\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'c', 'e'] )-\u0026gt;find( function( $value, $key ) {\n return $value \u0026gt;= 'b';\n} );\n// 'c'\n\nMap::from( ['a', 'c', 'e'] )-\u0026gt;find( function( $value, $key ) {\n return $value \u0026gt;= 'b';\n}, null, true );\n// 'e' because $reverse = true\n\nMap::from( [] )-\u0026gt;find( function( $value, $key ) {\n return $value \u0026gt;= 'b';\n}, 'none' );\n// 'none'\n\nMap::from( [] )-\u0026gt;find( function( $value, $key ) {\n return $value \u0026gt;= 'b';\n}, fn() =\u0026gt; 'none' );\n// 'none'\n\nMap::from( [] )-\u0026gt;find( function( $value, $key ) {\n return $value \u0026gt;= 'b';\n}, new \\Exception( 'error' ) );\n// throws \\Exception\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ee\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efind\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e \u0026gt;= \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// 'c'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ee\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efind\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e \u0026gt;= \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e;\n}, \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'e' because $reverse = true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efind\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e \u0026gt;= \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e;\n}, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003enone\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'none'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efind\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e \u0026gt;= \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e;\n}, \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e() =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003enone\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'none'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efind\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e \u0026gt;= \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e;\n}, \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003eException\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eerror\u003c/span\u003e'\u003c/span\u003e ) );\n\u003cspan class=\"pl-c\"\u003e// throws \\Exception\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#findkey\"\u003efindKey()\u003c/a\u003e - Returns the first matching key where the callback returns TRUE\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003efindKey()\u003c/h3\u003e\u003ca id=\"user-content-findkey\" class=\"anchor\" aria-label=\"Permalink: findKey()\" href=\"#findkey\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the first matching key where the callback returns TRUE.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function findKey( \\Closure $callback, $default = null, bool $reverse = false )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e findKey( \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edefault\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ereverse\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (value, key) parameters and returns TRUE/FALSE\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$default\u003c/code\u003e Default value, closure or exception if the callback only returns FALSE\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$reverse\u003c/code\u003e TRUE to test elements from back to front, FALSE for front to back (default)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed|null\u003c/strong\u003e First matching value, passed default value or an exception\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'c', 'e'] )-\u0026gt;findKey( function( $value, $key ) {\n return $value \u0026gt;= 'b';\n} );\n// 1 because array has keys 0, 1 and 2\n\nMap::from( ['a', 'c', 'e'] )-\u0026gt;findKey( function( $value, $key ) {\n return $value \u0026gt;= 'b';\n}, null, true );\n// 2 because array is reversed and 'e' \u0026gt;= 'b'\n\nMap::from( [] )-\u0026gt;findKey( function( $value, $key ) {\n return $value \u0026gt;= 'b';\n}, fn() =\u0026gt; 'none' );\n// default value 'none'\n\nMap::from( [] )-\u0026gt;findKey( function( $value, $key ) {\n return $value \u0026gt;= 'b';\n}, new \\Exception( 'error' ) );\n// throws exception\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ee\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efindKey\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e \u0026gt;= \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// 1 because array has keys 0, 1 and 2\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ee\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efindKey\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e \u0026gt;= \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e;\n}, \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 2 because array is reversed and 'e' \u0026gt;= 'b'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efindKey\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e \u0026gt;= \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e;\n}, \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e() =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003enone\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// default value 'none'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efindKey\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e \u0026gt;= \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e;\n}, \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003eException\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eerror\u003c/span\u003e'\u003c/span\u003e ) );\n\u003cspan class=\"pl-c\"\u003e// throws exception\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#find\"\u003efind()\u003c/a\u003e - Returns the first matching element where the callback returns TRUE\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003efirst()\u003c/h3\u003e\u003ca id=\"user-content-first\" class=\"anchor\" aria-label=\"Permalink: first()\" href=\"#first\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the first element from the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function first( $default = null )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e first( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edefault\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$default\u003c/code\u003e Default value, closure or exception if the map contains no elements\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed\u003c/strong\u003e First value of map, (generated) default value or an exception\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eUsing this method doesn't affect the internal array pointer.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;first();\n// 'a'\n\nMap::from( [] )-\u0026gt;first( 'x' );\n// 'x'\n\nMap::from( [] )-\u0026gt;first( new \\Exception( 'error' ) );\n// throws \\Exception\n\nMap::from( [] )-\u0026gt;first( function() { return rand(); } );\n// random integer\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efirst\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 'a'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efirst\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'x'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efirst\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003eException\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eerror\u003c/span\u003e'\u003c/span\u003e ) );\n\u003cspan class=\"pl-c\"\u003e// throws \\Exception\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efirst\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e() { \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003erand\u003c/span\u003e(); } );\n\u003cspan class=\"pl-c\"\u003e// random integer\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#firstkey\"\u003efirstKey()\u003c/a\u003e - Returns the key of the first element from the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#last\"\u003elast()\u003c/a\u003e - Returns the last element from the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#lastkey\"\u003elastKey()\u003c/a\u003e - Returns the key of the last element from the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003efirstKey()\u003c/h3\u003e\u003ca id=\"user-content-firstkey\" class=\"anchor\" aria-label=\"Permalink: firstKey()\" href=\"#firstkey\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the key of the first element from the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function firstKey( $default = null )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e firstKey( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edefault\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$default\u003c/code\u003e Default value, closure or exception if the map contains no elements\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed\u003c/strong\u003e First key of map, (generated) default value or an exception\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eUsing this method doesn't affect the internal array pointer.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 2] )-\u0026gt;firstKey();\n// 'a'\n\nMap::from( [] )-\u0026gt;firstKey( 'x' );\n// 'x'\n\nMap::from( [] )-\u0026gt;firstKey( new \\Exception( 'error' ) );\n// throws \\Exception\n\nMap::from( [] )-\u0026gt;firstKey( function() { return rand(); } );\n// random integer\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efirstKey\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 'a'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efirstKey\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'x'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efirstKey\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003eException\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eerror\u003c/span\u003e'\u003c/span\u003e ) );\n\u003cspan class=\"pl-c\"\u003e// throws \\Exception\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efirstKey\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e() { \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003erand\u003c/span\u003e(); } );\n\u003cspan class=\"pl-c\"\u003e// random integer\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#first\"\u003efirst()\u003c/a\u003e - Returns the first element from the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#last\"\u003elast()\u003c/a\u003e - Returns the last element from the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#lastkey\"\u003elastKey()\u003c/a\u003e - Returns the last key from the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eflat()\u003c/h3\u003e\u003ca id=\"user-content-flat\" class=\"anchor\" aria-label=\"Permalink: flat()\" href=\"#flat\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCreates a new map with all sub-array elements added recursively.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function flat( int $depth = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e flat( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edepth\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|null\u003c/strong\u003e \u003ccode\u003e$depth\u003c/code\u003e Number of levels to flatten multi-dimensional arrays\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with all sub-array elements added into it recursively, up to the specified depth\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are not preserved and the new map elements will be numbered from\n0-n. A value smaller than 1 for depth will return the same map elements\nindexed from 0-n. Flattening does also work if elements implement the\n\"Traversable\" interface (which the Map object does).\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis method is similar than \u003ca href=\"#collapse\"\u003ecollapse()\u003c/a\u003e but doesn't replace existing elements.\nKeys are NOT preserved using this method!\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [[0, 1], [2, 3]] )-\u0026gt;flat();\n// [0, 1, 2, 3]\n\nMap::from( [[0, 1], [[2, 3], 4]] )-\u0026gt;flat();\n// [0, 1, 2, 3, 4]\n\nMap::from( [[0, 1], [[2, 3], 4]] )-\u0026gt;flat( 1 );\n// [0, 1, [2, 3], 4]\n\nMap::from( [[0, 1], Map::from( [[2, 3], 4] )] )-\u0026gt;flat();\n// [0, 1, 2, 3, 4]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e], [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eflat\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0, 1, 2, 3]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e], [[\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eflat\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0, 1, 2, 3, 4]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e], [[\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eflat\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0, 1, [2, 3], 4]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e], Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eflat\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0, 1, 2, 3, 4]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#collapse\"\u003ecollapse()\u003c/a\u003e - Collapses all sub-array elements recursively to a new map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eflip()\u003c/h3\u003e\u003ca id=\"user-content-flip\" class=\"anchor\" aria-label=\"Permalink: flip()\" href=\"#flip\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eExchanges the keys with their values and vice versa.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function flip() : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e flip() : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with keys as values and values as keys\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'X', 'b' =\u0026gt; 'Y'] )-\u0026gt;flip();\n// ['X' =\u0026gt; 'a', 'Y' =\u0026gt; 'b']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eX\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eY\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eflip\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['X' =\u0026gt; 'a', 'Y' =\u0026gt; 'b']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003efloat()\u003c/h3\u003e\u003ca id=\"user-content-float\" class=\"anchor\" aria-label=\"Permalink: float()\" href=\"#float\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns an element by key and casts it to float if possible.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function float( $key, $default = 0.0 ) : float\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e float( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edefault\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003e0.0\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003efloat\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key or path to the requested item\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$default\u003c/code\u003e Default value if key isn't found (will be casted to float)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003efloat\u003c/strong\u003e Value from map or default value\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis does also work to map values from multi-dimensional arrays by passing the keys\nof the arrays separated by the delimiter (\"/\" by default), e.g. \u003ccode\u003ekey1/key2/key3\u003c/code\u003e\nto get \u003ccode\u003eval\u003c/code\u003e from \u003ccode\u003e['key1' =\u0026gt; ['key2' =\u0026gt; ['key3' =\u0026gt; 'val']]]\u003c/code\u003e. The same applies to\npublic properties of objects or objects implementing \u003ccode\u003e__isset()\u003c/code\u003e and \u003ccode\u003e__get()\u003c/code\u003e methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; true] )-\u0026gt;float( 'a' );\n// 1.0 (casted to float)\n\nMap::from( ['a' =\u0026gt; 1] )-\u0026gt;float( 'a' );\n// 1.0 (casted to float)\n\nMap::from( ['a' =\u0026gt; '1.1'] )-\u0026gt;float( 'a' );\n// 1.1 (casted to float)\n\nMap::from( ['a' =\u0026gt; '10'] )-\u0026gt;float( 'a' );\n// 10.0 (casted to float)\n\nMap::from( ['a' =\u0026gt; ['b' =\u0026gt; ['c' =\u0026gt; 1.1]]] )-\u0026gt;float( 'a/b/c' );\n// 1.1\n\nMap::from( [] )-\u0026gt;float( 'c', function() { return 1.1; } );\n// 1.1\n\nMap::from( [] )-\u0026gt;float( 'a', 1 );\n// 1.0 (default value used)\n\nMap::from( [] )-\u0026gt;float( 'a' );\n// 0.0\n\nMap::from( ['b' =\u0026gt; ''] )-\u0026gt;float( 'b' );\n// 0.0 (casted to float)\n\nMap::from( ['a' =\u0026gt; 'abc'] )-\u0026gt;float( 'a' );\n// 0.0 (casted to float)\n\nMap::from( ['b' =\u0026gt; null] )-\u0026gt;float( 'b' );\n// 0.0 (null is not scalar)\n\nMap::from( ['b' =\u0026gt; [true]] )-\u0026gt;float( 'b' );\n// 0.0 (arrays are not scalar)\n\nMap::from( ['b' =\u0026gt; '#resource'] )-\u0026gt;float( 'b' );\n// 0.0 (resources are not scalar)\n\nMap::from( ['b' =\u0026gt; new \\stdClass] )-\u0026gt;float( 'b' );\n// 0.0 (objects are not scalar)\n\nMap::from( [] )-\u0026gt;float( 'c', new \\Exception( 'error' ) );\n// throws exception\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 1.0 (casted to float)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 1.0 (casted to float)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1.1\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 1.1 (casted to float)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e10\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 10.0 (casted to float)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1.1\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea/b/c\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 1.1\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e() { \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-c1\"\u003e1.1\u003c/span\u003e; } );\n\u003cspan class=\"pl-c\"\u003e// 1.1\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 1.0 (default value used)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0.0\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0.0 (casted to float)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0.0 (casted to float)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0.0 (null is not scalar)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0.0 (arrays are not scalar)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e#resource\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0.0 (resources are not scalar)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0.0 (objects are not scalar)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efloat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003eException\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eerror\u003c/span\u003e'\u003c/span\u003e ) );\n\u003cspan class=\"pl-c\"\u003e// throws exception\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#bool\"\u003ebool()\u003c/a\u003e - Returns an element by key and casts it to boolean if possible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#cast\"\u003ecast()\u003c/a\u003e - Casts all entries to the passed type\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#get\"\u003eget()\u003c/a\u003e - Returns an element from the map by key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#int\"\u003eint()\u003c/a\u003e - Returns an element by key and casts it to integer if possible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#string\"\u003estring()\u003c/a\u003e - Returns an element by key and casts it to string if possible\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003efrom()\u003c/h3\u003e\u003ca id=\"user-content-from\" class=\"anchor\" aria-label=\"Permalink: from()\" href=\"#from\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCreates a new map instance if the value isn't one already.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public static function from( $elements = [] ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003estatic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e from( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e = [] ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$elements\u003c/code\u003e List of elements or single value\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"// array\nMap::from( [] );\n\n// null\nMap::from( null );\n\n// scalar\nMap::from( 'a' );\n\n// object\nMap::from( new \\stdClass() );\n\n// map object\nMap::from( new Map() );\n\n// iterable object\nMap::from( new ArrayObject() );\n\n// closure evaluated lazily\nMap::from( function() {\n return [];\n} );\"\u003e\u003cpre\u003e\u003cspan class=\"pl-c\"\u003e// array\u003c/span\u003e\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] );\n\n\u003cspan class=\"pl-c\"\u003e// null\u003c/span\u003e\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e );\n\n\u003cspan class=\"pl-c\"\u003e// scalar\u003c/span\u003e\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\n\u003cspan class=\"pl-c\"\u003e// object\u003c/span\u003e\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e() );\n\n\u003cspan class=\"pl-c\"\u003e// map object\u003c/span\u003e\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e() );\n\n\u003cspan class=\"pl-c\"\u003e// iterable object\u003c/span\u003e\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eArrayObject\u003c/span\u003e() );\n\n\u003cspan class=\"pl-c\"\u003e// closure evaluated lazily\u003c/span\u003e\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e() {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e [];\n} );\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#fromjson\"\u003efromJson()\u003c/a\u003e - Creates a new map instance from a JSON string\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003efromJson()\u003c/h3\u003e\u003ca id=\"user-content-fromjson\" class=\"anchor\" aria-label=\"Permalink: fromJson()\" href=\"#fromjson\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCreates a new map instance from a JSON string.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public static function fromJson( string $json, int $options = JSON_BIGINT_AS_STRING ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003estatic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e fromJson( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ejson\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eJSON_BIGINT_AS_STRING\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Combination of JSON_* constants\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map from decoded JSON string\u003c/li\u003e\n\u003cli\u003e@throws \u003cstrong\u003e\\RuntimeException\u003c/strong\u003e If the passed JSON string is invalid\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThere are several options available for decoding the JSON string which are described in\nthe \u003ca href=\"https://www.php.net/manual/en/function.json-decode.php\" rel=\"nofollow\"\u003ePHP json_decode() manual\u003c/a\u003e.\nThe parameter can be a single JSON_* constant or a bitmask of several constants combine\nby bitwise OR (|), e.g.:\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis method creates a lazy Map and the string is decoded after calling\nanother method that operates on the Map contents. Thus, the exception in\ncase of an error isn't thrown immediately but after calling the next method.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"JSON_BIGINT_AS_STRING|JSON_INVALID_UTF8_IGNORE\"\u003e\u003cpre\u003e\u003cspan class=\"pl-c1\"\u003eJSON_BIGINT_AS_STRING\u003c/span\u003e|\u003cspan class=\"pl-c1\"\u003eJSON_INVALID_UTF8_IGNORE\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::fromJson( '[\u0026quot;a\u0026quot;, \u0026quot;b\u0026quot;]' );\n// ['a', 'b']\n\nMap::fromJson( '{\u0026quot;a\u0026quot;: \u0026quot;b\u0026quot;}' );\n// ['a' =\u0026gt; 'b']\n\nMap::fromJson( '\u0026quot;\u0026quot;' );\n['']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efromJson\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e[\"a\", \"b\"]\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a', 'b']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efromJson\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e{\"a\": \"b\"}\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 'b']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efromJson\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e\"\"\u003c/span\u003e'\u003c/span\u003e );\n[\u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e]\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#from\"\u003efrom()\u003c/a\u003e - Creates a new map instance if the value isn't one already\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eget()\u003c/h3\u003e\u003ca id=\"user-content-get\" class=\"anchor\" aria-label=\"Permalink: get()\" href=\"#get\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns an element from the map by key.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function get( $key, $default = null )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e get( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edefault\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key or path to the requested item\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$default\u003c/code\u003e Default value if no element matches\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed\u003c/strong\u003e Value from map or default value\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis does also work to map values from multi-dimensional arrays by passing the keys\nof the arrays separated by the delimiter (\"/\" by default), e.g. \u003ccode\u003ekey1/key2/key3\u003c/code\u003e\nto get \u003ccode\u003eval\u003c/code\u003e from \u003ccode\u003e['key1' =\u0026gt; ['key2' =\u0026gt; ['key3' =\u0026gt; 'val']]]\u003c/code\u003e. The same applies to\npublic properties of objects or objects implementing \u003ccode\u003e__isset()\u003c/code\u003e and \u003ccode\u003e__get()\u003c/code\u003e methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'X', 'b' =\u0026gt; 'Y'] )-\u0026gt;get( 'a' );\n// 'X'\n\nMap::from( ['a' =\u0026gt; 'X', 'b' =\u0026gt; 'Y'] )-\u0026gt;get( 'c', 'Z' );\n// 'Z'\n\nMap::from( ['a' =\u0026gt; ['b' =\u0026gt; ['c' =\u0026gt; 'Y']]] )-\u0026gt;get( 'a/b/c' );\n// 'Y'\n\nMap::from( [] )-\u0026gt;get( 'c', new \\Exception( 'error' ) );\n// throws \\Exception\n\nMap::from( [] )-\u0026gt;get( 'c', function() { return rand(); } );\n// random integer\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eX\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eY\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eget\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'X'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eX\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eY\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eget\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eZ\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'Z'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eY\u003c/span\u003e'\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eget\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea/b/c\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'Y'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eget\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003eException\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eerror\u003c/span\u003e'\u003c/span\u003e ) );\n\u003cspan class=\"pl-c\"\u003e// throws \\Exception\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eget\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e() { \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003erand\u003c/span\u003e(); } );\n\u003cspan class=\"pl-c\"\u003e// random integer\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#bool\"\u003ebool()\u003c/a\u003e - Returns an element by key and casts it to boolean if possible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#int\"\u003eint()\u003c/a\u003e - Returns an element by key and casts it to integer if possible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#float\"\u003efloat()\u003c/a\u003e - Returns an element by key and casts it to float if possible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pull\"\u003epull()\u003c/a\u003e - Returns and removes an element from the map by its key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#set\"\u003eset()\u003c/a\u003e - Sets an element in the map by key without returning a new map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#string\"\u003estring()\u003c/a\u003e - Returns an element by key and casts it to string if possible\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003egetIterator()\u003c/h3\u003e\u003ca id=\"user-content-getiterator\" class=\"anchor\" aria-label=\"Permalink: getIterator()\" href=\"#getiterator\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns an iterator for the elements.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function getIterator() : \\ArrayIterator\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e getIterator() : \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eArrayIterator\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003e\\Iterator\u003c/strong\u003e Over map elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis method will be used by e.g. \u003ccode\u003eforeach()\u003c/code\u003e to loop over all entries.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"foreach( Map::from( ['a', 'b'] ) as $value ) {\n // ...\n}\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003eforeach\u003c/span\u003e( Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] ) \u003cspan class=\"pl-k\"\u003eas\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e ) {\n \u003cspan class=\"pl-c\"\u003e// ...\u003c/span\u003e\n}\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003egrep()\u003c/h3\u003e\u003ca id=\"user-content-grep\" class=\"anchor\" aria-label=\"Permalink: grep()\" href=\"#grep\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns only items which matches the regular expression.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function grep( string $pattern, int $flags = 0 ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e grep( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003epattern\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eflags\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$pattern\u003c/code\u003e Regular expression pattern, e.g. \"/ab/\"\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$flags\u003c/code\u003e PREG_GREP_INVERT to return elements not matching the pattern\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map containing only the matched elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eAll items are converted to string first before they are compared to the\nregular expression. Thus, fractions of \".0\" will be removed in float numbers\nwhich may result in unexpected results. The keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['ab', 'bc', 'cd'] )-\u0026gt;grep( '/b/' );\n// ['ab', 'bc']\n\nMap::from( ['ab', 'bc', 'cd'] )-\u0026gt;grep( '/a/', PREG_GREP_INVERT );\n// ['bc', 'cd']\n\nMap::from( [1.5, 0, 1.0, 'a'] )-\u0026gt;grep( '/^(\\d+)?\\.\\d+$/' );\n// [1.5]\n// float 1.0 is converted to string \u0026quot;1\u0026quot;\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eab\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecd\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003egrep\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e/b/\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['ab', 'bc']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eab\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecd\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003egrep\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e/a/\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003ePREG_GREP_INVERT\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['bc', 'cd']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1.5\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1.0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003egrep\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e/^(\\d+)?\\.\\d+$/\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [1.5]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e// float 1.0 is converted to string \"1\"\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#filter\"\u003efilter()\u003c/a\u003e - Runs a filter over each element of the map and returns a new map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#where\"\u003ewhere()\u003c/a\u003e - Filters the list of elements by a given condition\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003egroupBy()\u003c/h3\u003e\u003ca id=\"user-content-groupby\" class=\"anchor\" aria-label=\"Permalink: groupBy()\" href=\"#groupby\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eGroups associative array elements or objects by the passed key or closure.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function groupBy( $key ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e groupBy( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|string|int\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Closure function with (item, idx) parameters returning the key or the key itself to group by\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with elements grouped by the given key\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eInstead of overwriting items with the same keys like to the \u003ca href=\"#col\"\u003ecol()\u003c/a\u003e method does,\n\u003ca href=\"#groupby\"\u003egroupBy()\u003c/a\u003e keeps all entries in sub-arrays. It's preserves the keys of the\norignal map entries too.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis does also work for multi-dimensional arrays by passing the keys\nof the arrays separated by the delimiter (\"/\" by default), e.g. \"key1/key2/key3\"\nto get \"val\" from ['key1' =\u0026gt; ['key2' =\u0026gt; ['key3' =\u0026gt; 'val']]]. The same applies to\npublic properties of objects or objects implementing __isset() and __get() methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$list = [\n 10 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-abc'],\n 20 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-def'],\n 30 =\u0026gt; ['aid' =\u0026gt; 456, 'code' =\u0026gt; 'x-def']\n];\n\nMap::from( $list )-\u0026gt;groupBy( 'aid' );\n/*\n[\n 123 =\u0026gt; [\n 10 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-abc'],\n 20 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-def']\n ],\n 456 =\u0026gt; [\n 30 =\u0026gt; ['aid' =\u0026gt; 456, 'code' =\u0026gt; 'x-def']\n ]\n]\n*/\n\nMap::from( $list )-\u0026gt;groupBy( function( $item, $key ) {\n return substr( $item['code'], -3 );\n} );\n/*\n[\n 'abc' =\u0026gt; [\n 10 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-abc']\n ],\n 'def' =\u0026gt; [\n 20 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-def'],\n 30 =\u0026gt; ['aid' =\u0026gt; 456, 'code' =\u0026gt; 'x-def']\n ]\n]\n*/\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e = [\n \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e123\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecode\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex-abc\u003c/span\u003e'\u003c/span\u003e],\n \u003cspan class=\"pl-c1\"\u003e20\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e123\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecode\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex-def\u003c/span\u003e'\u003c/span\u003e],\n \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e456\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecode\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex-def\u003c/span\u003e'\u003c/span\u003e]\n];\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003egroupBy\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaid\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 123 =\u0026gt; [\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 10 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-abc'],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 20 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-def']\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 456 =\u0026gt; [\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 30 =\u0026gt; ['aid' =\u0026gt; 456, 'code' =\u0026gt; 'x-def']\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003egroupBy\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003esubstr\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecode\u003c/span\u003e'\u003c/span\u003e], -\u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 'abc' =\u0026gt; [\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 10 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-abc']\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 'def' =\u0026gt; [\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 20 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-def'],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 30 =\u0026gt; ['aid' =\u0026gt; 456, 'code' =\u0026gt; 'x-def']\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIn case the passed key doesn't exist in one or more items, these items are stored\nin a sub-array using an empty string as key:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$list = [\n 10 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-abc'],\n 20 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-def'],\n 30 =\u0026gt; ['aid' =\u0026gt; 456, 'code' =\u0026gt; 'x-def']\n];\n\nMap::from( $list )-\u0026gt;groupBy( 'xid' );\n/*\n[\n '' =\u0026gt; [\n 10 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-abc'],\n 20 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-def'],\n 30 =\u0026gt; ['aid' =\u0026gt; 456, 'code' =\u0026gt; 'x-def']\n ]\n]\n*/\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e = [\n \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e123\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecode\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex-abc\u003c/span\u003e'\u003c/span\u003e],\n \u003cspan class=\"pl-c1\"\u003e20\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e123\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecode\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex-def\u003c/span\u003e'\u003c/span\u003e],\n \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e456\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecode\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex-def\u003c/span\u003e'\u003c/span\u003e]\n];\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003egroupBy\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003exid\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e '' =\u0026gt; [\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 10 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-abc'],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 20 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-def'],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 30 =\u0026gt; ['aid' =\u0026gt; 456, 'code' =\u0026gt; 'x-def']\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#countby\"\u003ecountBy()\u003c/a\u003e - Counts how often the same values are in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ehas()\u003c/h3\u003e\u003ca id=\"user-content-has\" class=\"anchor\" aria-label=\"Permalink: has()\" href=\"#has\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eDetermines if a key or several keys exists in the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function has( $key ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e has( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003earray\u0026lt;int|string\u0026lt;|int|string\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key or path to the requested item\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if key is available in map, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eIf several keys are passed as array, all keys must exist in the map to\nreturn TRUE.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis does also work to map values from multi-dimensional arrays by passing the keys\nof the arrays separated by the delimiter (\"/\" by default), e.g. \u003ccode\u003ekey1/key2/key3\u003c/code\u003e\nto get \u003ccode\u003eval\u003c/code\u003e from \u003ccode\u003e['key1' =\u0026gt; ['key2' =\u0026gt; ['key3' =\u0026gt; 'val']]]\u003c/code\u003e. The same applies to\npublic properties of objects or objects implementing \u003ccode\u003e__isset()\u003c/code\u003e and \u003ccode\u003e__get()\u003c/code\u003e methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'X', 'b' =\u0026gt; 'Y'] )-\u0026gt;has( 'a' );\n// true\n\nMap::from( ['a' =\u0026gt; 'X', 'b' =\u0026gt; 'Y'] )-\u0026gt;has( ['a', 'b'] );\n// false\n\nMap::from( ['a' =\u0026gt; ['b' =\u0026gt; ['c' =\u0026gt; 'Y']]] )-\u0026gt;has( 'a/b/c' );\n// true\n\nMap::from( ['a' =\u0026gt; 'X', 'b' =\u0026gt; 'Y'] )-\u0026gt;has( 'c' );\n// false\n\nMap::from( ['a' =\u0026gt; 'X', 'b' =\u0026gt; 'Y'] )-\u0026gt;has( ['a', 'c'] );\n// false\n\nMap::from( ['a' =\u0026gt; 'X', 'b' =\u0026gt; 'Y'] )-\u0026gt;has( 'X' );\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eX\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eY\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ehas\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eX\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eY\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ehas\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eY\u003c/span\u003e'\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ehas\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea/b/c\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eX\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eY\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ehas\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eX\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eY\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ehas\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eX\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eY\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ehas\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eX\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eif()\u003c/h3\u003e\u003ca id=\"user-content-if\" class=\"anchor\" aria-label=\"Permalink: if()\" href=\"#if\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eExecutes callbacks depending on the condition.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function if( $condition, \\Closure $then, \\Closure $else = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e if( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003econdition\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ethen\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelse\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|bool\u003c/strong\u003e \u003ccode\u003e$condition\u003c/code\u003e Boolean or function with (map) parameter returning a boolean\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure\u003c/strong\u003e \u003ccode\u003e$then\u003c/code\u003e Function with (map) parameter\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|null\u003c/strong\u003e \u003ccode\u003e$else\u003c/code\u003e Function with (map) parameter (optional)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eIf callbacks for \"then\" and/or \"else\" are passed, these callbacks will be\nexecuted and their returned value is passed back within a Map object. In\ncase no \"then\" or \"else\" closure is given, the method will return the same\nmap object if the condition is true or an empty map object if it's false.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 0] )-\u0026gt;if(\n 'a' == 'b',\n function( Map $_ ) { echo \u0026quot;then\u0026quot;; }\n);\n// no output\n\nMap::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 0] )-\u0026gt;if(\n function( Map $map ) { return $map-\u0026gt;has( 'a' ); },\n function( Map $_ ) { echo \u0026quot;then\u0026quot;; },\n function( Map $_ ) { echo \u0026quot;else\u0026quot;; }\n);\n// then\n\nMap::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 0] )-\u0026gt;if(\n fn( Map $map ) =\u0026gt; $map-\u0026gt;has( 'c' ),\n function( Map $_ ) { echo \u0026quot;then\u0026quot;; },\n function( Map $_ ) { echo \u0026quot;else\u0026quot;; }\n);\n// else\n\nMap::from( ['a', 'b'] )-\u0026gt;if( true, function( $map ) {\n return $map-\u0026gt;push( 'c' );\n} );\n// ['a', 'b', 'c']\n\nMap::from( ['a', 'b'] )-\u0026gt;if( false, null, function( $map ) {\n return $map-\u0026gt;pop();\n} );\n// ['b']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eif\u003c/span\u003e(\n \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e == \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e,\n \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eMap\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e_\u003c/span\u003e ) { \u003cspan class=\"pl-k\"\u003eecho\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003ethen\u003c/span\u003e\"\u003c/span\u003e; }\n);\n\u003cspan class=\"pl-c\"\u003e// no output\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eif\u003c/span\u003e(\n \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eMap\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e ) { \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003ehas\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e ); },\n \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eMap\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e_\u003c/span\u003e ) { \u003cspan class=\"pl-k\"\u003eecho\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003ethen\u003c/span\u003e\"\u003c/span\u003e; },\n \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eMap\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e_\u003c/span\u003e ) { \u003cspan class=\"pl-k\"\u003eecho\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003eelse\u003c/span\u003e\"\u003c/span\u003e; }\n);\n\u003cspan class=\"pl-c\"\u003e// then\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eif\u003c/span\u003e(\n \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eMap\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003ehas\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e ),\n \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eMap\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e_\u003c/span\u003e ) { \u003cspan class=\"pl-k\"\u003eecho\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003ethen\u003c/span\u003e\"\u003c/span\u003e; },\n \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eMap\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e_\u003c/span\u003e ) { \u003cspan class=\"pl-k\"\u003eecho\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003eelse\u003c/span\u003e\"\u003c/span\u003e; }\n);\n\u003cspan class=\"pl-c\"\u003e// else\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eif\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003epush\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['a', 'b', 'c']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eif\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003epop\u003c/span\u003e();\n} );\n\u003cspan class=\"pl-c\"\u003e// ['b']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSince PHP 7.4, you can also pass arrow function like \u003ccode\u003efn($map) =\u0026gt; $map-\u0026gt;has('c')\u003c/code\u003e\n(a short form for anonymous closures) as parameters. The automatically have access\nto previously defined variables but can not modify them. Also, they can not have\na void return type and must/will always return something. Details about\n\u003ca href=\"https://www.php.net/manual/en/functions.arrow.php\" rel=\"nofollow\"\u003ePHP arrow functions\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#ifany\"\u003eifAny()\u003c/a\u003e - Executes callbacks depending if the map contains elements or not\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#ifempty\"\u003eifEmpty()\u003c/a\u003e - Executes callbacks depending if the map is empty or not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eifAny()\u003c/h3\u003e\u003ca id=\"user-content-ifany\" class=\"anchor\" aria-label=\"Permalink: ifAny()\" href=\"#ifany\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eExecutes callbacks depending if the map contains elements or not.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function ifAny( \\Closure $then = null, \\Closure $else = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e ifAny( \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ethen\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelse\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|null\u003c/strong\u003e \u003ccode\u003e$then\u003c/code\u003e Function with (map, condition) parameter (optional)\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|null\u003c/strong\u003e \u003ccode\u003e$else\u003c/code\u003e Function with (map, condition) parameter (optional)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eIf callbacks for \"then\" and/or \"else\" are passed, these callbacks will be\nexecuted and their returned value is passed back within a Map object. In\ncase no \"then\" or \"else\" closure is given, the method will return the same\nmap object.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a'] )-\u0026gt;ifAny( function( $map ) {\n $map-\u0026gt;push( 'b' );\n} );\n// ['a', 'b']\n\nMap::from( [] )-\u0026gt;ifAny( null, function( $map ) {\n return $map-\u0026gt;push( 'b' );\n} );\n// ['b']\n\nMap::from( ['a'] )-\u0026gt;ifAny( function( $map ) {\n return 'c';\n} );\n// ['c']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eifAny\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e ) {\n \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003epush\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['a', 'b']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eifAny\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003epush\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['b']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eifAny\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// ['c']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSince PHP 7.4, you can also pass arrow function like \u003ccode\u003efn($map) =\u0026gt; $map-\u0026gt;has('c')\u003c/code\u003e\n(a short form for anonymous closures) as parameters. The automatically have access\nto previously defined variables but can not modify them. Also, they can not have\na void return type and must/will always return something. Details about\n\u003ca href=\"https://www.php.net/manual/en/functions.arrow.php\" rel=\"nofollow\"\u003ePHP arrow functions\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#if\"\u003eif()\u003c/a\u003e - Executes callbacks depending on the condition\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#ifempty\"\u003eifEmpty()\u003c/a\u003e - Executes callbacks depending if the map is empty or not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eifEmpty()\u003c/h3\u003e\u003ca id=\"user-content-ifempty\" class=\"anchor\" aria-label=\"Permalink: ifEmpty()\" href=\"#ifempty\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eExecutes callbacks depending if the map is empty or not.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function ifEmpty( \\Closure $then = null, \\Closure $else = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e ifEmpty( \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ethen\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelse\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|null\u003c/strong\u003e \u003ccode\u003e$then\u003c/code\u003e Function with (map, condition) parameter (optional)\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|null\u003c/strong\u003e \u003ccode\u003e$else\u003c/code\u003e Function with (map, condition) parameter (optional)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eIf callbacks for \"then\" and/or \"else\" are passed, these callbacks will be\nexecuted and their returned value is passed back within a Map object. In\ncase no \"then\" or \"else\" closure is given, the method will return the same\nmap object.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [] )-\u0026gt;ifEmpty( function( $map ) {\n $map-\u0026gt;push( 'a' );\n} );\n// ['a']\n\nMap::from( ['a'] )-\u0026gt;ifEmpty( null, function( $map ) {\n return $map-\u0026gt;push( 'b' );\n} );\n// ['a', 'b']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eifEmpty\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e ) {\n \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003epush\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eifEmpty\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003epush\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['a', 'b']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSince PHP 7.4, you can also pass arrow function like \u003ccode\u003efn($map) =\u0026gt; $map-\u0026gt;has('c')\u003c/code\u003e\n(a short form for anonymous closures) as parameters. The automatically have access\nto previously defined variables but can not modify them. Also, they can not have\na void return type and must/will always return something. Details about\n\u003ca href=\"https://www.php.net/manual/en/functions.arrow.php\" rel=\"nofollow\"\u003ePHP arrow functions\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#if\"\u003eif()\u003c/a\u003e - Executes callbacks depending on the condition\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#ifany\"\u003eifAny()\u003c/a\u003e - Executes callbacks depending if the map contains elements or not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eimplements()\u003c/h3\u003e\u003ca id=\"user-content-implements\" class=\"anchor\" aria-label=\"Permalink: implements()\" href=\"#implements\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if all entries in the map are objects implementing the given interface.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function implements( string $interface, $throw = false ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e implements( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003einterface\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ethrow\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$interface\u003c/code\u003e Name of the interface that must be implemented\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Throwable|bool\u003c/strong\u003e \u003ccode\u003e$throw\u003c/code\u003e Passing TRUE or an exception name will throw the exception instead of returning FALSE\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if all entries implement the interface or FALSE if at least one doesn't\u003c/li\u003e\n\u003cli\u003e@throws \u003cstrong\u003e\\UnexpectedValueException|\\Throwable\u003c/strong\u003e If one entry doesn't implement the interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [new Map(), new Map()] )-\u0026gt;implements( '\\Countable' );\n// true\n\nMap::from( [new Map(), new \\stdClass()] )-\u0026gt;implements( '\\Countable' );\n// false\n\nMap::from( [new Map(), 123] )-\u0026gt;implements( '\\Countable' );\n// false\n\nMap::from( [new Map(), 123] )-\u0026gt;implements( '\\Countable', true );\n// throws \\UnexpectedValueException\n\nMap::from( [new Map(), 123] )-\u0026gt;implements( '\\Countable', '\\RuntimeException' );\n// throws \\RuntimeException\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e(), \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e()] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eimplements\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e\\Countable\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e(), \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e()] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eimplements\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e\\Countable\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e(), \u003cspan class=\"pl-c1\"\u003e123\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eimplements\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e\\Countable\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e(), \u003cspan class=\"pl-c1\"\u003e123\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eimplements\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e\\Countable\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// throws \\UnexpectedValueException\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e(), \u003cspan class=\"pl-c1\"\u003e123\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eimplements\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e\\Countable\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e\\RuntimeException\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// throws \\RuntimeException\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ein()\u003c/h3\u003e\u003ca id=\"user-content-in\" class=\"anchor\" aria-label=\"Permalink: in()\" href=\"#in\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if the passed element or elements are part of the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function in( $element, bool $strict = false ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e in( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelement\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003estrict\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed|array\u003c/strong\u003e \u003ccode\u003e$element\u003c/code\u003e Element or elements to search for in the map\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$strict\u003c/code\u003e TRUE to check the type too, using FALSE '1' and 1 will be the same\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if all elements are available in map, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;in( 'a' );\n// true\n\nMap::from( ['a', 'b'] )-\u0026gt;in( ['a', 'b'] );\n// true\n\nMap::from( ['a', 'b'] )-\u0026gt;in( 'x' );\n// false\n\nMap::from( ['a', 'b'] )-\u0026gt;in( ['a', 'x'] );\n// false\n\nMap::from( ['1', '2'] )-\u0026gt;in( 2, true );\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ein\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ein\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ein\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ein\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e2\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ein\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#compare\"\u003ecompare()\u003c/a\u003e - Compares the value against all map elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#contains\"\u003econtains()\u003c/a\u003e - Tests if an item exists in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#includes\"\u003eincludes()\u003c/a\u003e - Tests if element is included\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#none\"\u003enone()\u003c/a\u003e - Tests if none of the elements are part of the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eincludes()\u003c/h3\u003e\u003ca id=\"user-content-includes\" class=\"anchor\" aria-label=\"Permalink: includes()\" href=\"#includes\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if the passed element or elements are part of the map (alias).\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function includes( $element, bool $strict = false ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e includes( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelement\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003estrict\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed|array\u003c/strong\u003e \u003ccode\u003e$element\u003c/code\u003e Element or elements to search for in the map\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$strict\u003c/code\u003e TRUE to check the type too, using FALSE '1' and 1 will be the same\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if all elements are available in map, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis method is an alias for \u003ca href=\"#in\"\u003ein()\u003c/a\u003e. For performance reasons, \u003ccode\u003ein()\u003c/code\u003e should be preferred\nbecause it uses one method call less than \u003ccode\u003eincludes()\u003c/code\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#compare\"\u003ecompare()\u003c/a\u003e - Compares the value against all map elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#contains\"\u003econtains()\u003c/a\u003e - Tests if an item exists in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#in\"\u003ein()\u003c/a\u003e - Tests if element is included\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#none\"\u003enone()\u003c/a\u003e - Tests if none of the elements are part of the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eindex()\u003c/h3\u003e\u003ca id=\"user-content-index\" class=\"anchor\" aria-label=\"Permalink: index()\" href=\"#index\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the numerical index of the given key.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function index( $value ) : ?int\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e index( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e ) : ?\u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|string|int\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Key to search for or function with (key) parameters return TRUE if key is found\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eint|null\u003c/strong\u003e Position of the found value (zero based) or NULL if not found\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [4 =\u0026gt; 'a', 8 =\u0026gt; 'b'] )-\u0026gt;index( '8' );\n// 1\n\nMap::from( [4 =\u0026gt; 'a', 8 =\u0026gt; 'b'] )-\u0026gt;index( function( $key ) {\n return $key == '8';\n} );\n// 1\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e8\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eindex\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e8\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 1\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e8\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eindex\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e == \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e8\u003c/span\u003e'\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// 1\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eBoth examples will return \"1\" because the value \"b\" is at the second position\nand the returned index is zero based so the first item has the index \"0\".\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#at\"\u003eat()\u003c/a\u003e - Returns the value at the given position\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pos\"\u003epos()\u003c/a\u003e - Returns the numerical index of the value\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003einsertAfter()\u003c/h3\u003e\u003ca id=\"user-content-insertafter\" class=\"anchor\" aria-label=\"Permalink: insertAfter()\" href=\"#insertafter\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eInserts the value or values after the given element.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function insertAfter( $element, $value ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e insertAfter( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelement\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$element\u003c/code\u003e Element after the value is inserted\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Element or list of elements to insert\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eNumerical array indexes are not preserved.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar'] )-\u0026gt;insertAfter( 'foo', 'baz' );\n// ['a' =\u0026gt; 'foo', 0 =\u0026gt; 'baz', 'b' =\u0026gt; 'bar']\n\nMap::from( ['foo', 'bar'] )-\u0026gt;insertAfter( 'foo', ['baz', 'boo'] );\n// ['foo', 'baz', 'boo', 'bar']\n\nMap::from( ['foo', 'bar'] )-\u0026gt;insertAfter( null, 'baz' );\n// ['foo', 'bar', 'baz']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einsertAfter\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 'foo', 0 =\u0026gt; 'baz', 'b' =\u0026gt; 'bar']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einsertAfter\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eboo\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['foo', 'baz', 'boo', 'bar']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einsertAfter\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['foo', 'bar', 'baz']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#insertat\"\u003einsertAt()\u003c/a\u003e - Inserts the item at the given position in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#insertbefore\"\u003einsertBefore()\u003c/a\u003e - Inserts the value or values before the given element\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003einsertAt()\u003c/h3\u003e\u003ca id=\"user-content-insertat\" class=\"anchor\" aria-label=\"Permalink: insertAt()\" href=\"#insertat\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eInserts the item at the given position in the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function insertAt( int $pos, $element, $key = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e insertAt( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003epos\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelement\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$pos\u003c/code\u003e Position the element it should be inserted at\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$element\u003c/code\u003e Element to be inserted\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed|null\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Element key or NULL to assign an integer key automatically\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar'] )-\u0026gt;insertAt( 0, 'baz' );\n// [0 =\u0026gt; 'baz', 'a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar']\n\nMap::from( ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar'] )-\u0026gt;insertAt( 1, 'baz', 'c' );\n// ['a' =\u0026gt; 'foo', 'c' =\u0026gt; 'baz', 'b' =\u0026gt; 'bar']\n\nMap::from( ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar'] )-\u0026gt;insertAt( 5, 'baz' );\n// ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar', 'c' =\u0026gt; 'baz']\n\nMap::from( ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar'] )-\u0026gt;insertAt( -1, 'baz', 'c' );\n// ['a' =\u0026gt; 'foo', 'c' =\u0026gt; 'baz', 'b' =\u0026gt; 'bar']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einsertAt\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'baz', 'a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einsertAt\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 'foo', 'c' =\u0026gt; 'baz', 'b' =\u0026gt; 'bar']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einsertAt\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar', 'c' =\u0026gt; 'baz']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einsertAt\u003c/span\u003e( -\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 'foo', 'c' =\u0026gt; 'baz', 'b' =\u0026gt; 'bar']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#insertafter\"\u003einsertAfter()\u003c/a\u003e - Inserts the value or values after the given element\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#insertbefore\"\u003einsertBefore()\u003c/a\u003e - Inserts the value or values before the given element\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003einsertBefore()\u003c/h3\u003e\u003ca id=\"user-content-insertbefore\" class=\"anchor\" aria-label=\"Permalink: insertBefore()\" href=\"#insertbefore\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eInserts the value or values before the given element.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function insertBefore( $element, $value ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e insertBefore( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelement\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$element\u003c/code\u003e Element before the value is inserted\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Element or list of elements to insert\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eNumerical array indexes are not preserved.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar'] )-\u0026gt;insertBefore( 'bar', 'baz' );\n// ['a' =\u0026gt; 'foo', 0 =\u0026gt; 'baz', 'b' =\u0026gt; 'bar']\n\nMap::from( ['foo', 'bar'] )-\u0026gt;insertBefore( 'bar', ['baz', 'boo'] );\n// ['foo', 'baz', 'boo', 'bar']\n\nMap::from( ['foo', 'bar'] )-\u0026gt;insertBefore( null, 'baz' );\n// ['foo', 'bar', 'baz']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einsertBefore\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 'foo', 0 =\u0026gt; 'baz', 'b' =\u0026gt; 'bar']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einsertBefore\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e, [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eboo\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['foo', 'baz', 'boo', 'bar']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einsertBefore\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['foo', 'bar', 'baz']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#insertafter\"\u003einsertAfter()\u003c/a\u003e - Inserts the value or values after the given element\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#insertat\"\u003einsertAt()\u003c/a\u003e - Inserts the item at the given position in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003einString()\u003c/h3\u003e\u003ca id=\"user-content-instring\" class=\"anchor\" aria-label=\"Permalink: inString()\" href=\"#instring\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if the passed value or value are part of the strings in the map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis method is deprecated in favor of the multi-byte aware \u003ca href=\"#strcontains\"\u003estrContains()\u003c/a\u003e method.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function inString( $value, bool $case = true ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e inString( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecase\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003earray|string\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Value or values to compare the map elements, will be casted to string type\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$case\u003c/code\u003e TRUE if comparison is case sensitive, FALSE to ignore upper/lower case\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE If at least one element matches, FALSE if value is not in any string of the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eAll scalar values (bool, float, int and string) are casted to string values before\ncomparing to the given value. Non-scalar values in the map are ignored.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['abc'] )-\u0026gt;inString( 'c' );\n// true ('abc' contains 'c')\n\nMap::from( ['abc'] )-\u0026gt;inString( 'bc' );\n// true ('abc' contains 'bc')\n\nMap::from( [12345] )-\u0026gt;inString( '23' );\n// true ('12345' contains '23')\n\nMap::from( [123.4] )-\u0026gt;inString( 23.4 );\n// true ('123.4' contains '23.4')\n\nMap::from( [12345] )-\u0026gt;inString( false );\n// true ('12345' contains '')\n\nMap::from( [12345] )-\u0026gt;inString( true );\n// true ('12345' contains '1')\n\nMap::from( [false] )-\u0026gt;inString( false );\n// true ('' contains '')\n\nMap::from( ['abc'] )-\u0026gt;inString( '' );\n// true ('abc' contains '')\n\nMap::from( [''] )-\u0026gt;inString( false );\n// true ('' contains '')\n\nMap::from( ['abc'] )-\u0026gt;inString( 'BC', false );\n// true ('abc' contains 'BC' when case-insentive)\n\nMap::from( ['abc', 'def'] )-\u0026gt;inString( ['de', 'xy'] );\n// true ('def' contains 'de')\n\nMap::from( ['abc', 'def'] )-\u0026gt;inString( ['E', 'x'] );\n// false (doesn't contain \u0026quot;E\u0026quot; when case sensitive)\n\nMap::from( ['abc', 'def'] )-\u0026gt;inString( 'E' );\n// false (doesn't contain \u0026quot;E\u0026quot; when case sensitive)\n\nMap::from( [23456] )-\u0026gt;inString( true );\n// false ('23456' doesn't contain '1')\n\nMap::from( [false] )-\u0026gt;inString( 0 );\n// false ('' doesn't contain '0')\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('abc' contains 'c')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebc\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('abc' contains 'bc')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e12345\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e23\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('12345' contains '23')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e123.4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e23.4\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('123.4' contains '23.4')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e12345\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('12345' contains '')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e12345\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('12345' contains '1')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('' contains '')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('abc' contains '')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('' contains '')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eBC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('abc' contains 'BC' when case-insentive)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003edef\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ede\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003exy\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// true ('def' contains 'de')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003edef\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eE\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false (doesn't contain \"E\" when case sensitive)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003edef\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eE\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false (doesn't contain \"E\" when case sensitive)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e23456\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false ('23456' doesn't contain '1')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003einString\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false ('' doesn't contain '0')\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#strcontains\"\u003estrContains()\u003c/a\u003e - Tests if at least one of the passed strings is part of at least one entry\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#strcontainsall\"\u003estrContainsAll()\u003c/a\u003e - Tests if all of the entries contains one of the passed strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eint()\u003c/h3\u003e\u003ca id=\"user-content-int\" class=\"anchor\" aria-label=\"Permalink: int()\" href=\"#int\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns an element by key and casts it to integer if possible.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function int( $key, $default = 0 ) : int\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e int( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edefault\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key or path to the requested item\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$default\u003c/code\u003e Default value if key isn't found (will be casted to int)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eint\u003c/strong\u003e Value from map or default value\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis does also work to map values from multi-dimensional arrays by passing the keys\nof the arrays separated by the delimiter (\"/\" by default), e.g. \u003ccode\u003ekey1/key2/key3\u003c/code\u003e\nto get \u003ccode\u003eval\u003c/code\u003e from \u003ccode\u003e['key1' =\u0026gt; ['key2' =\u0026gt; ['key3' =\u0026gt; 'val']]]\u003c/code\u003e. The same applies to\npublic properties of objects or objects implementing \u003ccode\u003e__isset()\u003c/code\u003e and \u003ccode\u003e__get()\u003c/code\u003e methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; true] )-\u0026gt;int( 'a' );\n// 1\n\nMap::from( ['a' =\u0026gt; '1'] )-\u0026gt;int( 'a' );\n// 1 (casted to integer)\n\nMap::from( ['a' =\u0026gt; 1.1] )-\u0026gt;int( 'a' );\n// 1 (casted to integer)\n\nMap::from( ['a' =\u0026gt; '10'] )-\u0026gt;int( 'a' );\n// 10 (casted to integer)\n\nMap::from( ['a' =\u0026gt; ['b' =\u0026gt; ['c' =\u0026gt; 1]]] )-\u0026gt;int( 'a/b/c' );\n// 1\n\nMap::from( [] )-\u0026gt;int( 'c', function() { return rand( 1, 1 ); } );\n// 1\n\nMap::from( [] )-\u0026gt;int( 'a', 1 );\n// 1 (default value used)\n\nMap::from( [] )-\u0026gt;int( 'a' );\n// 0\n\nMap::from( ['b' =\u0026gt; ''] )-\u0026gt;int( 'b' );\n// 0 (casted to integer)\n\nMap::from( ['a' =\u0026gt; 'abc'] )-\u0026gt;int( 'a' );\n// 0 (casted to integer)\n\nMap::from( ['b' =\u0026gt; null] )-\u0026gt;int( 'b' );\n// 0 (null is not scalar)\n\nMap::from( ['b' =\u0026gt; [true]] )-\u0026gt;int( 'b' );\n// 0 (arrays are not scalar)\n\nMap::from( ['b' =\u0026gt; '#resource'] )-\u0026gt;int( 'b' );\n// 0 (resources are not scalar)\n\nMap::from( ['b' =\u0026gt; new \\stdClass] )-\u0026gt;int( 'b' );\n// 0 (objects are not scalar)\n\nMap::from( [] )-\u0026gt;int( 'c', new \\Exception( 'error' ) );\n// throws exception\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 1\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 1 (casted to integer)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1.1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 1 (casted to integer)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e10\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 10 (casted to integer)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea/b/c\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 1\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e() { \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003erand\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e ); } );\n\u003cspan class=\"pl-c\"\u003e// 1\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 1 (default value used)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0 (casted to integer)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0 (casted to integer)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0 (null is not scalar)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0 (arrays are not scalar)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e#resource\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0 (resources are not scalar)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0 (objects are not scalar)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eint\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003eException\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eerror\u003c/span\u003e'\u003c/span\u003e ) );\n\u003cspan class=\"pl-c\"\u003e// throws exception\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#bool\"\u003ebool()\u003c/a\u003e - Returns an element by key and casts it to boolean if possible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#cast\"\u003ecast()\u003c/a\u003e - Casts all entries to the passed type\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#get\"\u003eget()\u003c/a\u003e - Returns an element from the map by key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#float\"\u003efloat()\u003c/a\u003e - Returns an element by key and casts it to float if possible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#string\"\u003estring()\u003c/a\u003e - Returns an element by key and casts it to string if possible\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eintersect()\u003c/h3\u003e\u003ca id=\"user-content-intersect\" class=\"anchor\" aria-label=\"Permalink: intersect()\" href=\"#intersect\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns all values in a new map that are available in both, the map and the given elements.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function intersect( iterable $elements, callable $callback = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e intersect( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$elements\u003c/code\u003e List of elements\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable|null\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (valueA, valueB) parameters and returns -1 (\u0026lt;), 0 (=) and 1 (\u0026gt;)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar'] )-\u0026gt;intersect( ['bar'] );\n// ['b' =\u0026gt; 'bar']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eintersect\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['b' =\u0026gt; 'bar']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf a callback is passed, the given function will be used to compare the values.\nThe function must accept two parameters (vaA, valB) and must return\n-1 if value A is smaller than value B, 0 if both are equal and 1 if value A is\ngreater than value B. Both, a method name and an anonymous function can be passed:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [0 =\u0026gt; 'a'] )-\u0026gt;intersect( [0 =\u0026gt; 'A'], 'strcasecmp' );\n// ['a']\n\nMap::from( ['b' =\u0026gt; 'a'] )-\u0026gt;intersect( ['B' =\u0026gt; 'A'], 'strcasecmp' );\n// ['a']\n\nMap::from( ['b' =\u0026gt; 'a'] )-\u0026gt;intersect( ['c' =\u0026gt; 'A'], function( $valA, $valB ) {\n return strtolower( $valA ) \u0026lt;=\u0026gt; strtolower( $valB );\n} );\n// ['a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eintersect\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eintersect\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eintersect\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalA\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalB\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalA\u003c/span\u003e ) \u0026lt;=\u0026gt; \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalB\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#intersectassoc\"\u003eintersectAssoc()\u003c/a\u003e - Returns all values in a new map that are available in both, the map and the given elements while comparing the keys too\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#intersectkeys\"\u003eintersectKeys()\u003c/a\u003e - Returns all values in a new map that are available in both, the map and the given elements by comparing the keys only\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eintersectAssoc()\u003c/h3\u003e\u003ca id=\"user-content-intersectassoc\" class=\"anchor\" aria-label=\"Permalink: intersectAssoc()\" href=\"#intersectassoc\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns all values in a new map that are available in both, the map and the given elements while comparing the keys too.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function intersectAssoc( iterable $elements, callable $callback = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e intersectAssoc( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$elements\u003c/code\u003e List of elements\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable|null\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (valueA, valueB) parameters and returns -1 (\u0026lt;), 0 (=) and 1 (\u0026gt;)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar'] )-\u0026gt;intersectAssoc( new Map( ['foo', 'b' =\u0026gt; 'bar'] ) );\n// ['a' =\u0026gt; 'foo']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eintersectAssoc\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] ) );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 'foo']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf a callback is passed, the given function will be used to compare the values.\nThe function must accept two parameters (valA, valB) and must return\n-1 if value A is smaller than value B, 0 if both are equal and 1 if value A is\ngreater than value B. Both, a method name and an anonymous function can be passed:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [0 =\u0026gt; 'a'] )-\u0026gt;intersectAssoc( [0 =\u0026gt; 'A'], 'strcasecmp' );\n// [0 =\u0026gt; 'a']\n\nMap::from( ['b' =\u0026gt; 'a'] )-\u0026gt;intersectAssoc( ['B' =\u0026gt; 'A'], 'strcasecmp' );\n// ['b' =\u0026gt; 'a']\n\nMap::from( ['b' =\u0026gt; 'a'] )-\u0026gt;intersectAssoc( ['c' =\u0026gt; 'A'], function( $valA, $valB ) {\n return strtolower( $valA ) \u0026lt;=\u0026gt; strtolower( $valB );\n} );\n// []\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eintersectAssoc\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eintersectAssoc\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['b' =\u0026gt; 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eintersectAssoc\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalA\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalB\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalA\u003c/span\u003e ) \u0026lt;=\u0026gt; \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalB\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#intersect\"\u003eintersect()\u003c/a\u003e - Returns all values in a new map that are available in both, the map and the given elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#intersectkeys\"\u003eintersectKeys()\u003c/a\u003e - Returns all values in a new map that are available in both, the map and the given elements by comparing the keys only\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eintersectKeys()\u003c/h3\u003e\u003ca id=\"user-content-intersectkeys\" class=\"anchor\" aria-label=\"Permalink: intersectKeys()\" href=\"#intersectkeys\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns all values in a new map that are available in both, the map and the given elements by comparing the keys only.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function intersectKeys( iterable $elements, callable $callback = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e intersectKeys( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$elements\u003c/code\u003e List of elements\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable|null\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (keyA, keyB) parameters and returns -1 (\u0026lt;), 0 (=) and 1 (\u0026gt;)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'foo', 'b' =\u0026gt; 'bar'] )-\u0026gt;intersectKeys( new Map( ['foo', 'b' =\u0026gt; 'baz'] ) );\n// ['b' =\u0026gt; 'bar']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eintersectKeys\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMap\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e] ) );\n\u003cspan class=\"pl-c\"\u003e// ['b' =\u0026gt; 'bar']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf a callback is passed, the given function will be used to compare the keys.\nThe function must accept two parameters (key A and B) and must return\n-1 if key A is smaller than key B, 0 if both are equal and 1 if key A is\ngreater than key B. Both, a method name and an anonymous function can be passed:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [0 =\u0026gt; 'a'] )-\u0026gt;intersectKeys( [0 =\u0026gt; 'A'], 'strcasecmp' );\n// [0 =\u0026gt; 'a']\n\nMap::from( ['b' =\u0026gt; 'a'] )-\u0026gt;intersectKeys( ['B' =\u0026gt; 'X'], 'strcasecmp' );\n// ['b' =\u0026gt; 'a']\n\nMap::from( ['b' =\u0026gt; 'a'] )-\u0026gt;intersectKeys( ['c' =\u0026gt; 'a'], function( $keyA, $keyB ) {\n return strtolower( $keyA ) \u0026lt;=\u0026gt; strtolower( $keyB );\n} );\n// []\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eintersectKeys\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eintersectKeys\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eX\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['b' =\u0026gt; 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eintersectKeys\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyA\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyB\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyA\u003c/span\u003e ) \u0026lt;=\u0026gt; \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyB\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#intersect\"\u003eintersect()\u003c/a\u003e - Returns all values in a new map that are available in both, the map and the given elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#intersectassoc\"\u003eintersectAssoc()\u003c/a\u003e - Returns all values in a new map that are available in both, the map and the given elements while comparing the keys too\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eis()\u003c/h3\u003e\u003ca id=\"user-content-is\" class=\"anchor\" aria-label=\"Permalink: is()\" href=\"#is\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if the map consists of the same keys and values\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function is( iterable $list, bool $strict = false ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e is( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003estrict\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$list\u003c/code\u003e List of key/value pairs to compare with\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$strict\u003c/code\u003e TRUE for comparing order of elements too, FALSE for key/values only\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if given list is equal, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;is( ['b', 'a'] );\n// true\n\nMap::from( ['a', 'b'] )-\u0026gt;is( ['b', 'a'], true );\n// false\n\nMap::from( [1, 2] )-\u0026gt;is( ['1', '2'] );\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eis\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eis\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eis\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e2\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#equals\"\u003eequals()\u003c/a\u003e - Tests if the passed elements are equal to the elements in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eisEmpty()\u003c/h3\u003e\u003ca id=\"user-content-isempty\" class=\"anchor\" aria-label=\"Permalink: isEmpty()\" href=\"#isempty\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eDetermines if the map is empty or not.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function isEmpty() : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e isEmpty() : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if map is empty, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe method is equivalent to \u003ca href=\"#empty\"\u003eempty()\u003c/a\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [] )-\u0026gt;isEmpty();\n// true\n\nMap::from( ['a'] )-isEmpty();\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisEmpty\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u003cspan class=\"pl-en\"\u003eisEmpty\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#empty\"\u003eempty()\u003c/a\u003e - Determines if the map is empty or not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eisList()\u003c/h3\u003e\u003ca id=\"user-content-islist\" class=\"anchor\" aria-label=\"Permalink: isList()\" href=\"#islist\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eChecks if the map contains a list of subsequentially numbered keys.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function isList() : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e isList() : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return bool TRUE if the map is a list, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [] )-\u0026gt;isList();\n// true\n\nMap::from( [1, 3, 2] )-\u0026gt;isList();\n// true, keys are 0, 1 and 2\n\nMap::from( [0 =\u0026gt; 1, 1 =\u0026gt; 2, 2 =\u0026gt; 3] )-\u0026gt;isList();\n// true, keys are consecutive\n\nMap::from( [1 =\u0026gt; 1, 2 =\u0026gt; 2, 3 =\u0026gt; 3] )-\u0026gt;isList();\n// false, keys doesn't start with 0\n\nMap::from( [0 =\u0026gt; 1, 2 =\u0026gt; 2, 3 =\u0026gt; 3] )-\u0026gt;isList();\n// false, keys are not consecutive\n\nMap::from( ['a' =\u0026gt; 1, 1 =\u0026gt; 2, 'c' =\u0026gt; 3] )-\u0026gt;isList();\n// false, keys are not all numeric\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisList\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisList\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true, keys are 0, 1 and 2\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisList\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true, keys are consecutive\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisList\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false, keys doesn't start with 0\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisList\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false, keys are not consecutive\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisList\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false, keys are not all numeric\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#isobject\"\u003eisObject()\u003c/a\u003e - Determines if all entries are objects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isnumeric\"\u003eisNumeric()\u003c/a\u003e - Determines if all entries are numeric values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isscalar\"\u003eisScalar()\u003c/a\u003e - Determines if all entries are scalar values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isstring\"\u003eisString()\u003c/a\u003e - Determines if all entries are string values\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eisObject()\u003c/h3\u003e\u003ca id=\"user-content-isobject\" class=\"anchor\" aria-label=\"Permalink: isObject()\" href=\"#isobject\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eDetermines if all entries are objects.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function isObject() : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e isObject() : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if all map entries are objects, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [] )-\u0026gt;isObject();\n// true\n\nMap::from( [new stdClass] )-\u0026gt;isObject();\n// true\n\nMap::from( [1] )-\u0026gt;isObject();\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisObject\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisObject\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisObject\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#islist\"\u003eisList()\u003c/a\u003e - Checks if the map contains a list of subsequentially numbered keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isnumeric\"\u003eisNumeric()\u003c/a\u003e - Determines if all entries are numeric values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isscalar\"\u003eisScalar()\u003c/a\u003e - Determines if all entries are scalar values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isstring\"\u003eisString()\u003c/a\u003e - Determines if all entries are string values\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eisNumeric()\u003c/h3\u003e\u003ca id=\"user-content-isnumeric\" class=\"anchor\" aria-label=\"Permalink: isNumeric()\" href=\"#isnumeric\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eDetermines if all entries are numeric values.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function isNumeric() : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e isNumeric() : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if all map entries are numeric values, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [] )-\u0026gt;isNumeric();\n// true\n\nMap::from( [1] )-\u0026gt;isNumeric();\n// true\n\nMap::from( [1.1] )-\u0026gt;isNumeric();\n// true\n\nMap::from( [010] )-\u0026gt;isNumeric();\n// true\n\nMap::from( [0x10] )-\u0026gt;isNumeric();\n// true\n\nMap::from( [0b10] )-\u0026gt;isNumeric();\n// true\n\nMap::from( ['010'] )-\u0026gt;isNumeric();\n// true\n\nMap::from( ['10'] )-\u0026gt;isNumeric();\n// true\n\nMap::from( ['10.1'] )-\u0026gt;isNumeric();\n// true\n\nMap::from( [' 10 '] )-\u0026gt;isNumeric();\n// true\n\nMap::from( ['10e2'] )-\u0026gt;isNumeric();\n// true\n\nMap::from( ['0b10'] )-\u0026gt;isNumeric();\n// false\n\nMap::from( ['0x10'] )-\u0026gt;isNumeric();\n// false\n\nMap::from( ['null'] )-\u0026gt;isNumeric();\n// false\n\nMap::from( [null] )-\u0026gt;isNumeric();\n// false\n\nMap::from( [true] )-\u0026gt;isNumeric();\n// false\n\nMap::from( [[]] )-\u0026gt;isNumeric();\n// false\n\nMap::from( [''] )-\u0026gt;isNumeric();\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1.1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e010\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0x10\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0b10\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e010\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e10\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e10.1\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e 10 \u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e10e2\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e0b10\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e0x10\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003enull\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisNumeric\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#islist\"\u003eisList()\u003c/a\u003e - Checks if the map contains a list of subsequentially numbered keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isobject\"\u003eisObject()\u003c/a\u003e - Determines if all entries are objects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isscalar\"\u003eisScalar()\u003c/a\u003e - Determines if all entries are scalar values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isstring\"\u003eisString()\u003c/a\u003e - Determines if all entries are string values\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eisScalar()\u003c/h3\u003e\u003ca id=\"user-content-isscalar\" class=\"anchor\" aria-label=\"Permalink: isScalar()\" href=\"#isscalar\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eDetermines if all entries are scalar values.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function isScalar() : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e isScalar() : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if all map entries are scalar values, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [] )-\u0026gt;isScalar();\n// true\n\nMap::from( [1] )-\u0026gt;isScalar();\n// true\n\nMap::from( [1.1] )-\u0026gt;isScalar();\n// true\n\nMap::from( ['abc'] )-\u0026gt;isScalar();\n// true\n\nMap::from( [true, false] )-\u0026gt;isScalar();\n// true\n\nMap::from( [new stdClass] )-\u0026gt;isScalar();\n// false\n\nMap::from( [resource] )-\u0026gt;isScalar();\n// false\n\nMap::from( [null] )-\u0026gt;isScalar();\n// false\n\nMap::from( [[1]] )-\u0026gt;isScalar();\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisScalar\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisScalar\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1.1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisScalar\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisScalar\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisScalar\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisScalar\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [resource] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisScalar\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisScalar\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisScalar\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#islist\"\u003eisList()\u003c/a\u003e - Checks if the map contains a list of subsequentially numbered keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isobject\"\u003eisObject()\u003c/a\u003e - Determines if all entries are objects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isnumeric\"\u003eisNumeric()\u003c/a\u003e - Determines if all entries are numeric values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isstring\"\u003eisString()\u003c/a\u003e - Determines if all entries are string values\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eisString()\u003c/h3\u003e\u003ca id=\"user-content-isstring\" class=\"anchor\" aria-label=\"Permalink: isString()\" href=\"#isstring\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eDetermines if all entries are string values.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function isString() : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e isString() : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if all map entries are string values, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['abc'] )-\u0026gt;isString();\n// true\n\nMap::from( [] )-\u0026gt;isString();\n// true\n\nMap::from( [1] )-\u0026gt;isString();\n// false\n\nMap::from( [1.1] )-\u0026gt;isString();\n// false\n\nMap::from( [true, false] )-\u0026gt;isString();\n// false\n\nMap::from( [new stdClass] )-\u0026gt;isString();\n// false\n\nMap::from( [resource] )-\u0026gt;isString();\n// false\n\nMap::from( [null] )-\u0026gt;isString();\n// false\n\nMap::from( [[1]] )-\u0026gt;isString();\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisString\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisString\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisString\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1.1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisString\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisString\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisString\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [resource] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisString\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisString\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eisString\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#islist\"\u003eisList()\u003c/a\u003e - Checks if the map contains a list of subsequentially numbered keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isobject\"\u003eisObject()\u003c/a\u003e - Determines if all entries are objects\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isnumeric\"\u003eisNumeric()\u003c/a\u003e - Determines if all entries are numeric values\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#isscalar\"\u003eisScalar()\u003c/a\u003e - Determines if all entries are scalar values\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ejoin()\u003c/h3\u003e\u003ca id=\"user-content-join\" class=\"anchor\" aria-label=\"Permalink: join()\" href=\"#join\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eConcatenates the string representation of all elements.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function join( $glue = '' ) : string\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e join( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eglue\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$glue\u003c/code\u003e Character or string added between elements\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003estring\u003c/strong\u003e String of concatenated map elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eObjects that implement \u003ccode\u003e__toString()\u003c/code\u003e does also work, otherwise (and in case\nof arrays) a PHP notice is generated. NULL and FALSE values are treated as\nempty strings.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b', false] )-\u0026gt;join();\n// 'ab'\n\nMap::from( ['a', 'b', null, false] )-\u0026gt;join( '-' );\n// 'a-b--'\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ejoin\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 'ab'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ejoin\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e-\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'a-b--'\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ejsonSerialize()\u003c/h3\u003e\u003ca id=\"user-content-jsonserialize\" class=\"anchor\" aria-label=\"Permalink: jsonSerialize()\" href=\"#jsonserialize\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSpecifies the data which should be serialized to JSON by json_encode().\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function jsonSerialize()\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e jsonSerialize()\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003earray\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Data to serialize to JSON\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"json_encode( Map::from( ['a', 'b'] ) );\n// [\u0026quot;a\u0026quot;, \u0026quot;b\u0026quot;]\n\njson_encode( Map::from( ['a' =\u0026gt; 0, 'b' =\u0026gt; 1] ) );\n// {\u0026quot;a\u0026quot;:0,\u0026quot;b\u0026quot;:1}\"\u003e\u003cpre\u003e\u003cspan class=\"pl-en\"\u003ejson_encode\u003c/span\u003e( Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] ) );\n\u003cspan class=\"pl-c\"\u003e// [\"a\", \"b\"]\u003c/span\u003e\n\n\u003cspan class=\"pl-en\"\u003ejson_encode\u003c/span\u003e( Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] ) );\n\u003cspan class=\"pl-c\"\u003e// {\"a\":0,\"b\":1}\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ekeys()\u003c/h3\u003e\u003ca id=\"user-content-keys\" class=\"anchor\" aria-label=\"Permalink: keys()\" href=\"#keys\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the keys of the map elements in a new map object.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function keys() : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e keys() : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] );\n// [0, 1]\n\nMap::from( ['a' =\u0026gt; 0, 'b' =\u0026gt; 1] );\n// ['a', 'b']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// [0, 1]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['a', 'b']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ekrsort()\u003c/h3\u003e\u003ca id=\"user-content-krsort\" class=\"anchor\" aria-label=\"Permalink: krsort()\" href=\"#krsort\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts the elements by their keys in reverse order.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function krsort( int $options = SORT_REGULAR ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e krsort( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eSORT_REGULAR\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Sort options for \u003ccode\u003ekrsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe parameter modifies how the keys are compared. Possible values are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSORT_REGULAR : compare elements normally (don't change types)\u003c/li\u003e\n\u003cli\u003eSORT_NUMERIC : compare elements numerically\u003c/li\u003e\n\u003cli\u003eSORT_STRING : compare elements as strings\u003c/li\u003e\n\u003cli\u003eSORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by \u003ccode\u003esetlocale()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_NATURAL : compare elements as strings using \"natural ordering\" like \u003ccode\u003enatsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method and no new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['b' =\u0026gt; 0, 'a' =\u0026gt; 1] )-\u0026gt;krsort();\n// ['a' =\u0026gt; 1, 'b' =\u0026gt; 0]\n\nMap::from( [1 =\u0026gt; 'a', 0 =\u0026gt; 'b'] )-\u0026gt;krsort();\n// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ekrsort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'b' =\u0026gt; 0]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ekrsort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#krsorted\"\u003ekrsorted()\u003c/a\u003e - Sorts a copy of the elements by their keys in reverse order\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ekrsorted()\u003c/h3\u003e\u003ca id=\"user-content-krsorted\" class=\"anchor\" aria-label=\"Permalink: krsorted()\" href=\"#krsorted\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts a copy of the elements by their keys in reverse order.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function krsorted( int $options = SORT_REGULAR ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e krsorted( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eSORT_REGULAR\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Sort options for \u003ccode\u003ekrsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe parameter modifies how the keys are compared. Possible values are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSORT_REGULAR : compare elements normally (don't change types)\u003c/li\u003e\n\u003cli\u003eSORT_NUMERIC : compare elements numerically\u003c/li\u003e\n\u003cli\u003eSORT_STRING : compare elements as strings\u003c/li\u003e\n\u003cli\u003eSORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by \u003ccode\u003esetlocale()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_NATURAL : compare elements as strings using \"natural ordering\" like \u003ccode\u003enatsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method and a new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['b' =\u0026gt; 0, 'a' =\u0026gt; 1] )-\u0026gt;krsorted();\n// ['a' =\u0026gt; 1, 'b' =\u0026gt; 0]\n\nMap::from( [1 =\u0026gt; 'a', 0 =\u0026gt; 'b'] )-\u0026gt;krsorted();\n// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ekrsorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'b' =\u0026gt; 0]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ekrsorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#krsort\"\u003ekrsort()\u003c/a\u003e - Sorts the elements by their keys in reverse order\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ekrsorted()\u003c/h3\u003e\u003ca id=\"user-content-krsorted-1\" class=\"anchor\" aria-label=\"Permalink: krsorted()\" href=\"#krsorted-1\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts a copy of the elements by their keys in reverse order.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function krsorted( int $options = SORT_REGULAR ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e krsorted( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eSORT_REGULAR\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Sort options for \u003ccode\u003ekrsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe parameter modifies how the keys are compared. Possible values are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSORT_REGULAR : compare elements normally (don't change types)\u003c/li\u003e\n\u003cli\u003eSORT_NUMERIC : compare elements numerically\u003c/li\u003e\n\u003cli\u003eSORT_STRING : compare elements as strings\u003c/li\u003e\n\u003cli\u003eSORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by \u003ccode\u003esetlocale()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_NATURAL : compare elements as strings using \"natural ordering\" like \u003ccode\u003enatsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method and a new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['b' =\u0026gt; 0, 'a' =\u0026gt; 1] )-\u0026gt;krsorted();\n// ['a' =\u0026gt; 1, 'b' =\u0026gt; 0]\n\nMap::from( [1 =\u0026gt; 'a', 0 =\u0026gt; 'b'] )-\u0026gt;krsorted();\n// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ekrsorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'b' =\u0026gt; 0]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ekrsorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eksort()\u003c/h3\u003e\u003ca id=\"user-content-ksort\" class=\"anchor\" aria-label=\"Permalink: ksort()\" href=\"#ksort\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts the elements by their keys.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function ksort( int $options = SORT_REGULAR ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e ksort( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eSORT_REGULAR\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Sort options for \u003ccode\u003eksort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe parameter modifies how the keys are compared. Possible values are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSORT_REGULAR : compare elements normally (don't change types)\u003c/li\u003e\n\u003cli\u003eSORT_NUMERIC : compare elements numerically\u003c/li\u003e\n\u003cli\u003eSORT_STRING : compare elements as strings\u003c/li\u003e\n\u003cli\u003eSORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by \u003ccode\u003esetlocale()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_NATURAL : compare elements as strings using \"natural ordering\" like \u003ccode\u003enatsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method and no new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['b' =\u0026gt; 0, 'a' =\u0026gt; 1] )-\u0026gt;ksort();\n// ['a' =\u0026gt; 1, 'b' =\u0026gt; 0]\n\nMap::from( [1 =\u0026gt; 'a', 0 =\u0026gt; 'b'] )-\u0026gt;ksort();\n// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eksort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'b' =\u0026gt; 0]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eksort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eksorted()\u003c/h3\u003e\u003ca id=\"user-content-ksorted\" class=\"anchor\" aria-label=\"Permalink: ksorted()\" href=\"#ksorted\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts a copy of the elements by their keys.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function ksorted( int $options = SORT_REGULAR ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e ksorted( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eSORT_REGULAR\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Sort options for \u003ccode\u003eksort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe parameter modifies how the keys are compared. Possible values are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSORT_REGULAR : compare elements normally (don't change types)\u003c/li\u003e\n\u003cli\u003eSORT_NUMERIC : compare elements numerically\u003c/li\u003e\n\u003cli\u003eSORT_STRING : compare elements as strings\u003c/li\u003e\n\u003cli\u003eSORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by \u003ccode\u003esetlocale()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_NATURAL : compare elements as strings using \"natural ordering\" like \u003ccode\u003enatsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method and a new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['b' =\u0026gt; 0, 'a' =\u0026gt; 1] )-\u0026gt;ksorted();\n// ['a' =\u0026gt; 1, 'b' =\u0026gt; 0]\n\nMap::from( [1 =\u0026gt; 'a', 0 =\u0026gt; 'b'] )-\u0026gt;ksorted();\n// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eksorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'b' =\u0026gt; 0]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eksorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003elast()\u003c/h3\u003e\u003ca id=\"user-content-last\" class=\"anchor\" aria-label=\"Permalink: last()\" href=\"#last\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the last element from the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function last( $default = null )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e last( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edefault\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$default\u003c/code\u003e Default value, closure or exception if the map contains no elements\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed\u003c/strong\u003e Last value of map, (generated) default value or an exception\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eUsing this method doesn't affect the internal array pointer.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;last();\n// 'b'\n\nMap::from( [] )-\u0026gt;last( 'x' );\n// 'x'\n\nMap::from( [] )-\u0026gt;last( new \\Exception( 'error' ) );\n// throws \\Exception\n\nMap::from( [] )-\u0026gt;last( function() { return rand(); } );\n// random integer\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003elast\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 'b'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003elast\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'x'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003elast\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003eException\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eerror\u003c/span\u003e'\u003c/span\u003e ) );\n\u003cspan class=\"pl-c\"\u003e// throws \\Exception\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003elast\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e() { \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003erand\u003c/span\u003e(); } );\n\u003cspan class=\"pl-c\"\u003e// random integer\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#first\"\u003efirst()\u003c/a\u003e - Returns the first element from the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#firstkey\"\u003efirstKey()\u003c/a\u003e - Returns the key of the first element from the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#lastkey\"\u003elastKey()\u003c/a\u003e - Returns the key of the last element from the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003elastKey()\u003c/h3\u003e\u003ca id=\"user-content-lastkey\" class=\"anchor\" aria-label=\"Permalink: lastKey()\" href=\"#lastkey\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the key of the last element from the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function lastKey( $default = null )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e lastKey( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edefault\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$default\u003c/code\u003e Default value, closure or exception if the map contains no elements\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed\u003c/strong\u003e Last key of map, (generated) default value or an exception\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eUsing this method doesn't affect the internal array pointer.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 2] )-\u0026gt;lastKey();\n// 'b'\n\nMap::from( [] )-\u0026gt;lastKey( 'x' );\n// 'x'\n\nMap::from( [] )-\u0026gt;lastKey( new \\Exception( 'error' ) );\n// throws \\Exception\n\nMap::from( [] )-\u0026gt;lastKey( function() { return rand(); } );\n// random integer\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003elastKey\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 'b'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003elastKey\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'x'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003elastKey\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003eException\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eerror\u003c/span\u003e'\u003c/span\u003e ) );\n\u003cspan class=\"pl-c\"\u003e// throws \\Exception\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003elastKey\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e() { \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003erand\u003c/span\u003e(); } );\n\u003cspan class=\"pl-c\"\u003e// random integer\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#first\"\u003efirst()\u003c/a\u003e - Returns the first element from the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#firstkey\"\u003efirstKey()\u003c/a\u003e - Returns the key of the first element from the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#last\"\u003elast()\u003c/a\u003e - Returns the last element from the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eltrim()\u003c/h3\u003e\u003ca id=\"user-content-ltrim\" class=\"anchor\" aria-label=\"Permalink: ltrim()\" href=\"#ltrim\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRemoves the passed characters from the left of all strings.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function ltrim( string $chars = \u0026quot; \\n\\r\\t\\v\\x00\u0026quot; ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e ltrim( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003echars\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003e \u003c/span\u003e\\n\\r\\t\\v\\x00\"\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$chars\u003c/code\u003e List of characters to trim\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [\u0026quot; abc\\n\u0026quot;, \u0026quot;\\tcde\\r\\n\u0026quot;] )-\u0026gt;ltrim();\n// [\u0026quot;abc\\n\u0026quot;, \u0026quot;cde\\r\\n\u0026quot;]\n\nMap::from( [\u0026quot;a b c\u0026quot;, \u0026quot;cbxa\u0026quot;] )-\u0026gt;ltrim( 'abc' );\n// [\u0026quot; b c\u0026quot;, \u0026quot;xa\u0026quot;]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003e abc\u003c/span\u003e\\n\"\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\"\\t\u003cspan class=\"pl-s\"\u003ecde\u003c/span\u003e\\r\\n\"\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eltrim\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [\"abc\\n\", \"cde\\r\\n\"]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003ea b c\u003c/span\u003e\"\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003ecbxa\u003c/span\u003e\"\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eltrim\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [\" b c\", \"xa\"]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#ltrim\"\u003eltrim()\u003c/a\u003e - Removes the passed characters from the left of all strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#rtrim\"\u003ertrim()\u003c/a\u003e - Removes the passed characters from the right of all strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#trim\"\u003etrim()\u003c/a\u003e - Removes the passed characters from the left/right of all strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003emap()\u003c/h3\u003e\u003ca id=\"user-content-map\" class=\"anchor\" aria-label=\"Permalink: map()\" href=\"#map\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eMaps new values to the existing keys using the passed function and returns a new map for the result.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function map( callable $callback ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e map( \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (value, key) parameters and returns computed result\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with the original keys and the computed values\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 2, 'b' =\u0026gt; 4] )-\u0026gt;map( function( $value, $key ) {\n return $value * 2;\n} );\n// ['a' =\u0026gt; 4, 'b' =\u0026gt; 8]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emap\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e * \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 4, 'b' =\u0026gt; 8]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#col\"\u003ecol()\u003c/a\u003e - Returns the values of a single column/property from an array of arrays or list of elements in a new map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pluck\"\u003epluck()\u003c/a\u003e - Creates a key/value mapping (alias)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pluck\"\u003erekey()\u003c/a\u003e - Changes the keys according to the passed function\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003emax()\u003c/h3\u003e\u003ca id=\"user-content-max\" class=\"anchor\" aria-label=\"Permalink: max()\" href=\"#max\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the maximum value of all elements.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function max( $col = null )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e max( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecol\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eClosure|string|null\u003c/strong\u003e \u003ccode\u003e$col\u003c/code\u003e Closure, key in the nested array or object to check for\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed\u003c/strong\u003e Maximum value or NULL if there are no elements in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eNULL values are removed before the comparison. If there are no values or all\nvalues are NULL, NULL is returned.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis does also work to map values from multi-dimensional arrays by passing the keys\nof the arrays separated by the delimiter (\"/\" by default), e.g. \u003ccode\u003ekey1/key2/key3\u003c/code\u003e\nto get \u003ccode\u003eval\u003c/code\u003e from \u003ccode\u003e['key1' =\u0026gt; ['key2' =\u0026gt; ['key3' =\u0026gt; 'val']]]\u003c/code\u003e. The same applies to\npublic properties of objects or objects implementing \u003ccode\u003e__isset()\u003c/code\u003e and \u003ccode\u003e__get()\u003c/code\u003e methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eBe careful comparing elements of different types because this can have\nunpredictable results due to the \u003ca href=\"https://www.php.net/manual/en/language.operators.comparison.php\" rel=\"nofollow\"\u003ePHP comparison rules\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [1, 3, 2, 5, 4] )-\u0026gt;max();\n// 5\n\nMap::from( ['bar', 'foo', 'baz'] )-\u0026gt;max();\n// 'foo'\n\nMap::from( [['p' =\u0026gt; 30], ['p' =\u0026gt; 50], ['p' =\u0026gt; 10]] )-\u0026gt;max( 'p' );\n// 50\n\nMap::from( [['i' =\u0026gt; ['p' =\u0026gt; 30]], ['i' =\u0026gt; ['p' =\u0026gt; 50]]] )-\u0026gt;max( 'i/p' );\n// 50\n\nMap::from( [['i' =\u0026gt; ['p' =\u0026gt; 30]], ['i' =\u0026gt; ['p' =\u0026gt; 50]]] )-\u0026gt;max( fn( $val, $key ) =\u0026gt; $val['i']['p'] ?? null )\n// 50\n\nMap::from( [50, 10, 30] )-\u0026gt;max( fn( $val, $key ) =\u0026gt; $key \u0026gt; 0 ? $val : null )\n// 30\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emax\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 5\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emax\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 'foo'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emax\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 50\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e]], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emax\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei/p\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 50\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e]], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emax\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e][\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e] ?? \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e )\n\u003cspan class=\"pl-c\"\u003e// 50\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emax\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e \u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e ? \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e : \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e )\n\u003cspan class=\"pl-c\"\u003e// 30\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#avg\"\u003eavg()\u003c/a\u003e - Returns the average of all integer and float values in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#count\"\u003ecount()\u003c/a\u003e - Returns the total number of elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#min\"\u003emin()\u003c/a\u003e - Returns the minium value of all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#percentage\"\u003epercentage()\u003c/a\u003e - Returns the percentage of all elements passing the test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#sum\"\u003esum()\u003c/a\u003e - Returns the sum of all values in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003emerge()\u003c/h3\u003e\u003ca id=\"user-content-merge\" class=\"anchor\" aria-label=\"Permalink: merge()\" href=\"#merge\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eMerges the map with the given elements without returning a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function merge( iterable $elements, bool $recursive = false ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e merge( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003erecursive\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$elements\u003c/code\u003e List of elements\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$recursive\u003c/code\u003e TRUE to merge nested arrays too, FALSE for first level elements only\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eElements with the same non-numeric keys will be overwritten, elements with the\nsame numeric keys will be added.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe method is similar to \u003ca href=\"#replace\"\u003ereplace()\u003c/a\u003e but doesn't replace elements with the same\nnumeric keys. If you want to be sure that all passed elements are added without\nreplacing existing ones, use \u003ca href=\"#concat\"\u003econcat()\u003c/a\u003e instead.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;merge( ['b', 'c'] );\n// ['a', 'b', 'b', 'c']\n\nMap::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 2] )-\u0026gt;merge( ['b' =\u0026gt; 4, 'c' =\u0026gt; 6] );\n// ['a' =\u0026gt; 1, 'b' =\u0026gt; 4, 'c' =\u0026gt; 6]\n\nMap::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 2] )-\u0026gt;merge( ['b' =\u0026gt; 4, 'c' =\u0026gt; 6], true );\n// ['a' =\u0026gt; 1, 'b' =\u0026gt; [2, 4], 'c' =\u0026gt; 6]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emerge\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['a', 'b', 'b', 'c']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emerge\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e6\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'b' =\u0026gt; 4, 'c' =\u0026gt; 6]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emerge\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e6\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'b' =\u0026gt; [2, 4], 'c' =\u0026gt; 6]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#combine\"\u003econcat()\u003c/a\u003e - Adds all elements with new keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#union\"\u003eunion()\u003c/a\u003e - Builds a union of the elements and the given elements without returning a new map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003emethod()\u003c/h3\u003e\u003ca id=\"user-content-method\" class=\"anchor\" aria-label=\"Permalink: method()\" href=\"#method\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRegisters a custom method or returns the existing one.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public static function method( string $method, \\Closure $fcn = null ) : ?\\Closure\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003estatic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e method( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emethod\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003efcn\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : ?\u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$method\u003c/code\u003e Method name\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|null\u003c/strong\u003e \u003ccode\u003e$fcn\u003c/code\u003e Anonymous function or NULL to return the closure if available\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003e\\Closure|null\u003c/strong\u003e Registered anonymous function or NULL if none has been registered\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe registed method has access to the class properties if called non-static.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::method( 'foo', function( $arg1, $arg2 ) {\n return array_merge( $this-\u0026gt;elements, [$arg1, $arg2] );\n} );\n\nMap::method( 'foo' );\n// registered closure\n\nMap::method( 'foo2' );\n// NULL\n\nMap::from( ['bar'] )-\u0026gt;foo( 'foo', 'baz' );\n// ['bar', 'foo', 'baz']\n\n\n\nMap::foo( 'foo', 'baz' );\n// error because `$this-\u0026gt;elements` isn't available\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003emethod\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003earg1\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003earg2\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003earray_merge\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e\u003cspan class=\"pl-smi\"\u003ethis\u003c/span\u003e\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-c1\"\u003eelements\u003c/span\u003e, [\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003earg1\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003earg2\u003c/span\u003e] );\n} );\n\nMap::\u003cspan class=\"pl-en\"\u003emethod\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// registered closure\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003emethod\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo2\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// NULL\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efoo\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['bar', 'foo', 'baz']\u003c/span\u003e\n\n\n\nMap::\u003cspan class=\"pl-en\"\u003efoo\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// error because `$this-\u0026gt;elements` isn't available\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eStatic calls can't access \u003ccode\u003e$this-\u0026gt;elements\u003c/code\u003e but can operate on the parameter values:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::method( 'bar', function( $arg1, $arg2 ) {\n return new static( [$arg1, $arg2] );\n} );\n\nMap::foo( 'foo', 'baz' );\n// ['foo', 'baz']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003emethod\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003earg1\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003earg2\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003estatic\u003c/span\u003e( [\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003earg1\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003earg2\u003c/span\u003e] );\n} );\n\nMap::\u003cspan class=\"pl-en\"\u003efoo\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['foo', 'baz']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003emin()\u003c/h3\u003e\u003ca id=\"user-content-min\" class=\"anchor\" aria-label=\"Permalink: min()\" href=\"#min\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the minimum value of all elements.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function min( $col = null )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e min( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecol\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eClosure|string|null\u003c/strong\u003e \u003ccode\u003e$col\u003c/code\u003e Closure, key in the nested array or object to check for\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed\u003c/strong\u003e Minimum value or NULL if there are no elements in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eNULL values are removed before the comparison. If there are no values or all\nvalues are NULL, NULL is returned.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis does also work to map values from multi-dimensional arrays by passing the keys\nof the arrays separated by the delimiter (\"/\" by default), e.g. \u003ccode\u003ekey1/key2/key3\u003c/code\u003e\nto get \u003ccode\u003eval\u003c/code\u003e from \u003ccode\u003e['key1' =\u0026gt; ['key2' =\u0026gt; ['key3' =\u0026gt; 'val']]]\u003c/code\u003e. The same applies to\npublic properties of objects or objects implementing \u003ccode\u003e__isset()\u003c/code\u003e and \u003ccode\u003e__get()\u003c/code\u003e methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eBe careful comparing elements of different types because this can have\nunpredictable results due to the \u003ca href=\"https://www.php.net/manual/en/language.operators.comparison.php\" rel=\"nofollow\"\u003ePHP comparison rules\u003c/a\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [2, 3, 1, 5, 4] )-\u0026gt;min();\n// 1\n\nMap::from( ['baz', 'foo', 'bar'] )-\u0026gt;min();\n// 'bar'\n\nMap::from( [['p' =\u0026gt; 30], ['p' =\u0026gt; 50], ['p' =\u0026gt; 10]] )-\u0026gt;min( 'p' );\n// 10\n\nMap::from( [['i' =\u0026gt; ['p' =\u0026gt; 30]], ['i' =\u0026gt; ['p' =\u0026gt; 50]]] )-\u0026gt;min( 'i/p' );\n// 30\n\nMap::from( [['i' =\u0026gt; ['p' =\u0026gt; 30]], ['i' =\u0026gt; ['p' =\u0026gt; 50]]] )-\u0026gt;min( fn( $val, $key ) =\u0026gt; $val['i']['p'] ?? null )\n// 30\n\nMap::from( [10, 50, 30] )-\u0026gt;min( fn( $val, $key ) =\u0026gt; $key \u0026gt; 0 ? $val : null )\n// 30\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emin\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 1\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emin\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 'bar'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emin\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 10\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e]], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emin\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei/p\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 30\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e]], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emin\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e][\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e] ?? \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e )\n\u003cspan class=\"pl-c\"\u003e// 30\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003emin\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e \u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e ? \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e : \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e )\n\u003cspan class=\"pl-c\"\u003e// 30\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#avg\"\u003eavg()\u003c/a\u003e - Returns the average of all integer and float values in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#count\"\u003ecount()\u003c/a\u003e - Returns the total number of elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#max\"\u003emax()\u003c/a\u003e - Returns the maximum value of all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#percentage\"\u003epercentage()\u003c/a\u003e - Returns the percentage of all elements passing the test\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#sum\"\u003esum()\u003c/a\u003e - Returns the sum of all values in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003enone()\u003c/h3\u003e\u003ca id=\"user-content-none\" class=\"anchor\" aria-label=\"Permalink: none()\" href=\"#none\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if none of the elements are part of the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function none( $element, bool $strict = false ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e none( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelement\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003estrict\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed|array\u003c/strong\u003e \u003ccode\u003e$element\u003c/code\u003e Element or elements to search for in the map\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$strict\u003c/code\u003e TRUE to check the type too, using FALSE '1' and 1 will be the same\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if none of the elements is part of the map, FALSE if at least one is\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;none( 'x' );\n// true\n\nMap::from( ['1', '2'] )-\u0026gt;none( 2, true );\n// true\n\nMap::from( ['a', 'b'] )-\u0026gt;none( 'a' );\n// false\n\nMap::from( ['a', 'b'] )-\u0026gt;none( ['a', 'b'] );\n// false\n\nMap::from( ['a', 'b'] )-\u0026gt;none( ['a', 'x'] );\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003enone\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e2\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003enone\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003enone\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003enone\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003enone\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#contains\"\u003econtains()\u003c/a\u003e - Tests if an item exists in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#includes\"\u003eincludes()\u003c/a\u003e - Tests if element is included\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#in\"\u003ein()\u003c/a\u003e - Tests if element is included\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003enth()\u003c/h3\u003e\u003ca id=\"user-content-nth\" class=\"anchor\" aria-label=\"Permalink: nth()\" href=\"#nth\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns every nth element from the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function nth( int $step, int $offset = 0 ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e nth( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003estep\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoffset\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$step\u003c/code\u003e Step width\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$offset\u003c/code\u003e Number of element to start from (0-based)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b', 'c', 'd', 'e', 'f'] )-\u0026gt;nth( 2 );\n// ['a', 'c', 'e']\n\nMap::from( ['a', 'b', 'c', 'd', 'e', 'f'] )-\u0026gt;nth( 2, 1 );\n// ['b', 'd', 'f']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ee\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ef\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003enth\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a', 'c', 'e']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ee\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ef\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003enth\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['b', 'd', 'f']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eoffsetExists()\u003c/h3\u003e\u003ca id=\"user-content-offsetexists\" class=\"anchor\" aria-label=\"Permalink: offsetExists()\" href=\"#offsetexists\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eDetermines if an element exists at an offset.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function offsetExists( $key )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e offsetExists( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key to check for\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if key exists, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$map = Map::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 3, 'c' =\u0026gt; null] );\n\nisset( $map['b'] );\n// true\n\nisset( $map['c'] );\n// false\n\nisset( $map['d'] );\n// false\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e = Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e] );\n\n\u003cspan class=\"pl-en\"\u003eisset\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\n\u003cspan class=\"pl-en\"\u003eisset\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\n\u003cspan class=\"pl-en\"\u003eisset\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#offsetget\"\u003eoffsetGet()\u003c/a\u003e - Returns an element at a given offset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#offsetset\"\u003eoffsetSet()\u003c/a\u003e - Sets the element at a given offset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#offsetunset\"\u003eoffsetUnset()\u003c/a\u003e - Unsets the element at a given offset\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eoffsetGet()\u003c/h3\u003e\u003ca id=\"user-content-offsetget\" class=\"anchor\" aria-label=\"Permalink: offsetGet()\" href=\"#offsetget\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns an element at a given offset.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function offsetGet( $key )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e offsetGet( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key to return the element for\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed\u003c/strong\u003e Value associated to the given key\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$map = Map::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 3] );\n\n$map['b'];\n// 3\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e = Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] );\n\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e];\n\u003cspan class=\"pl-c\"\u003e// 3\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#offsetexists\"\u003eoffsetExists()\u003c/a\u003e - Determines if an element exists at an offset.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#offsetset\"\u003eoffsetSet()\u003c/a\u003e - Sets the element at a given offset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#offsetunset\"\u003eoffsetUnset()\u003c/a\u003e - Unsets the element at a given offset\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eoffsetSet()\u003c/h3\u003e\u003ca id=\"user-content-offsetset\" class=\"anchor\" aria-label=\"Permalink: offsetSet()\" href=\"#offsetset\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSets the element at a given offset.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function offsetSet( $key, $value )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e offsetSet( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string|null\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key to set the element for or NULL to append value\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e New value set for the key\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$map = Map::from( ['a' =\u0026gt; 1] );\n\n$map['b'] = 2;\n// ['a' =\u0026gt; 1, 'b' =\u0026gt; 2]\n\n$map[0] = 4;\n// ['a' =\u0026gt; 1, 'b' =\u0026gt; 2, 0 =\u0026gt; 4]\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e = Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] );\n\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] = \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e;\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'b' =\u0026gt; 2]\u003c/span\u003e\n\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e[\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e] = \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e;\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'b' =\u0026gt; 2, 0 =\u0026gt; 4]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#offsetexists\"\u003eoffsetExists()\u003c/a\u003e - Determines if an element exists at an offset.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#offsetget\"\u003eoffsetGet()\u003c/a\u003e - Returns an element at a given offset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#offsetunset\"\u003eoffsetUnset()\u003c/a\u003e - Unsets the element at a given offset\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eoffsetUnset()\u003c/h3\u003e\u003ca id=\"user-content-offsetunset\" class=\"anchor\" aria-label=\"Permalink: offsetUnset()\" href=\"#offsetunset\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eUnsets the element at a given offset.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function offsetUnset( $key )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e offsetUnset( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key for unsetting the item\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$map = Map::from( ['a' =\u0026gt; 1] );\n\nunset( $map['a'] );\n// []\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e = Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] );\n\nunset( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#offsetexists\"\u003eoffsetExists()\u003c/a\u003e - Determines if an element exists at an offset.\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#offsetget\"\u003eoffsetGet()\u003c/a\u003e - Returns an element at a given offset\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#offsetset\"\u003eoffsetSet()\u003c/a\u003e - Sets the element at a given offset\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eonly()\u003c/h3\u003e\u003ca id=\"user-content-only\" class=\"anchor\" aria-label=\"Permalink: only()\" href=\"#only\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns a new map with only those elements specified by the given keys.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function only( $keys ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e only( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeys\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;mixed\u0026gt;|array\u0026lt;mixed\u0026gt;|string|int\u003c/strong\u003e \u003ccode\u003e$keys\u003c/code\u003e Keys of the elements that should be returned\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with only the elements specified by the keys\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 0 =\u0026gt; 'b'] )-\u0026gt;only( 'a' );\n// ['a' =\u0026gt; 1]\n\nMap::from( ['a' =\u0026gt; 1, 0 =\u0026gt; 'b', 1 =\u0026gt; 'c'] )-\u0026gt;only( [0, 1] );\n// [0 =\u0026gt; 'b', 1 =\u0026gt; 'c']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eonly\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eonly\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b', 1 =\u0026gt; 'c']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#clear\"\u003eclear()\u003c/a\u003e - Removes all elements from the current map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#except\"\u003eexcept()\u003c/a\u003e - Returns a new map without the passed element keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#reject\"\u003ereject()\u003c/a\u003e - Removes all matched elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#remove\"\u003eremove()\u003c/a\u003e - Removes an element by key\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eorder()\u003c/h3\u003e\u003ca id=\"user-content-order\" class=\"anchor\" aria-label=\"Permalink: order()\" href=\"#order\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns a new map with elements ordered by the passed keys.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function order( iterable $keys ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e order( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeys\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$keys\u003c/code\u003e Keys of the elements in the required order\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with elements ordered by the passed keys\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 1 =\u0026gt; 'c', 0 =\u0026gt; 'b'] )-\u0026gt;order( [0, 1, 'a'] );\n// [0 =\u0026gt; 'b', 1 =\u0026gt; 'c', 'a' =\u0026gt; 1]\n\nMap::from( ['a' =\u0026gt; 1, 1 =\u0026gt; 'c', 0 =\u0026gt; 'b'] )-\u0026gt;order( [0, 1, 2] );\n// [0 =\u0026gt; 'b', 1 =\u0026gt; 'c', 2 =\u0026gt; null]\n\nMap::from( ['a' =\u0026gt; 1, 1 =\u0026gt; 'c', 0 =\u0026gt; 'b'] )-\u0026gt;order( [0, 1] );\n// [0 =\u0026gt; 'b', 1 =\u0026gt; 'c']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eorder\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b', 1 =\u0026gt; 'c', 'a' =\u0026gt; 1]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eorder\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b', 1 =\u0026gt; 'c', 2 =\u0026gt; null]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eorder\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b', 1 =\u0026gt; 'c']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003epad()\u003c/h3\u003e\u003ca id=\"user-content-pad\" class=\"anchor\" aria-label=\"Permalink: pad()\" href=\"#pad\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eFill up to the specified length with the given value\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function pad( int $size, $value = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e pad( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003esize\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$size\u003c/code\u003e Total number of elements that should be in the list\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Value to fill up with if the map length is smaller than the given size\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eIn case the given number is smaller than the number of element that are\nalready in the list, the map is unchanged. If the size is positive, the\nnew elements are padded on the right, if it's negative then the elements\nare padded on the left.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eAssociative keys are preserved, numerical keys are replaced and numerical\nkeys are used for the new elements.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [1, 2, 3] )-\u0026gt;pad( 5 );\n// [1, 2, 3, null, null]\n\nMap::from( [1, 2, 3] )-\u0026gt;pad( -5 );\n// [null, null, 1, 2, 3]\n\nMap::from( [1, 2, 3] )-\u0026gt;pad( 5, '0' );\n// [1, 2, 3, '0', '0']\n\nMap::from( [1, 2, 3] )-\u0026gt;pad( 2 );\n// [1, 2, 3]\n\nMap::from( [10 =\u0026gt; 1, 20 =\u0026gt; 2] )-\u0026gt;pad( 3 );\n// [0 =\u0026gt; 1, 1 =\u0026gt; 2, 2 =\u0026gt; null]\n\nMap::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 2] )-\u0026gt;pad( 3, 3 );\n// ['a' =\u0026gt; 1, 'b' =\u0026gt; 2, 0 =\u0026gt; 3]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epad\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [1, 2, 3, null, null]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epad\u003c/span\u003e( -\u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [null, null, 1, 2, 3]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epad\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e0\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [1, 2, 3, '0', '0']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epad\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [1, 2, 3]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e20\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epad\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 1, 1 =\u0026gt; 2, 2 =\u0026gt; null]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epad\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'b' =\u0026gt; 2, 0 =\u0026gt; 3]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003epartition()\u003c/h3\u003e\u003ca id=\"user-content-partition\" class=\"anchor\" aria-label=\"Permalink: partition()\" href=\"#partition\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eBreaks the list of elements into the given number of groups.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function partition( $num ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e partition( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003enum\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|int\u003c/strong\u003e \u003ccode\u003e$number\u003c/code\u003e Function with (value, index) as arguments returning the bucket key or number of groups\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys of the original map are preserved in the returned map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [1, 2, 3, 4, 5] )-\u0026gt;partition( 3 );\n// [[0 =\u0026gt; 1, 1 =\u0026gt; 2], [2 =\u0026gt; 3, 3 =\u0026gt; 4], [4 =\u0026gt; 5]]\n\nMap::from( [1, 2, 3, 4, 5] )-\u0026gt;partition( function( $val, $idx ) {\n\treturn $idx % 3;\n} );\n// [0 =\u0026gt; [0 =\u0026gt; 1, 3 =\u0026gt; 4], 1 =\u0026gt; [1 =\u0026gt; 2, 4 =\u0026gt; 5], 2 =\u0026gt; [2 =\u0026gt; 3]]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epartition\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [[0 =\u0026gt; 1, 1 =\u0026gt; 2], [2 =\u0026gt; 3, 3 =\u0026gt; 4], [4 =\u0026gt; 5]]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epartition\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eidx\u003c/span\u003e ) {\n\t\u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eidx\u003c/span\u003e % \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; [0 =\u0026gt; 1, 3 =\u0026gt; 4], 1 =\u0026gt; [1 =\u0026gt; 2, 4 =\u0026gt; 5], 2 =\u0026gt; [2 =\u0026gt; 3]]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#chunk\"\u003echunk()\u003c/a\u003e - Chunks the map into arrays with the given number of elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003epercentage()\u003c/h3\u003e\u003ca id=\"user-content-percentage\" class=\"anchor\" aria-label=\"Permalink: percentage()\" href=\"#percentage\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the percentage of all elements passing the test in the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function percentage( \\Closure $fcn, int $precision = 2 ) : float\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e percentage( \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003efcn\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eprecision\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003efloat\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure\u003c/strong\u003e \u003ccode\u003e$fcn\u003c/code\u003e Closure to filter the values in the nested array or object to compute the percentage\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$precision\u003c/code\u003e Number of decimal digits use by the result value\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003efloat\u003c/strong\u003e Percentage of all elements passing the test in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [30, 50, 10] )-\u0026gt;percentage( fn( $val, $key ) =\u0026gt; $val \u0026lt; 50 );\n// 66.67\n\nMap::from( [] )-\u0026gt;percentage( fn( $val, $key ) =\u0026gt; true );\n// 0.0\n\nMap::from( [30, 50, 10] )-\u0026gt;percentage( fn( $val, $key ) =\u0026gt; $val \u0026gt; 100 );\n// 0.0\n\nMap::from( [30, 50, 10] )-\u0026gt;percentage( fn( $val, $key ) =\u0026gt; $val \u0026gt; 30, 3 );\n// 33.333\n\nMap::from( [30, 50, 10] )-\u0026gt;percentage( fn( $val, $key ) =\u0026gt; $val \u0026gt; 30, 0 );\n// 33.0\n\nMap::from( [30, 50, 10] )-\u0026gt;percentage( fn( $val, $key ) =\u0026gt; $val \u0026lt; 50, -1 );\n// 70.0\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epercentage\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e \u0026lt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 66.67\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epercentage\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0.0\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epercentage\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e \u0026gt; \u003cspan class=\"pl-c1\"\u003e100\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 0.0\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epercentage\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e \u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 33.333\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epercentage\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e \u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 33.0\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epercentage\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e \u0026lt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e, -\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 70.0\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#avg\"\u003eavg()\u003c/a\u003e - Returns the average of all integer and float values in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#count\"\u003ecount()\u003c/a\u003e - Returns the total number of elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#max\"\u003emax()\u003c/a\u003e - Returns the maximum value of all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#min\"\u003emin()\u003c/a\u003e - Returns the minium value of all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#sum\"\u003esum()\u003c/a\u003e - Returns the sum of all values in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003epipe()\u003c/h3\u003e\u003ca id=\"user-content-pipe\" class=\"anchor\" aria-label=\"Permalink: pipe()\" href=\"#pipe\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003ePasses the map to the given callback and return the result.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function pipe( \\Closure $callback )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e pipe( \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with map as parameter which returns arbitrary result\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed\u003c/strong\u003e Result returned by the callback\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;pipe( function( $map ) {\n return strrev( $map-\u0026gt;join( '-' ) );\n} );\n// 'b-a'\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epipe\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrrev\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003ejoin\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e-\u003c/span\u003e'\u003c/span\u003e ) );\n} );\n\u003cspan class=\"pl-c\"\u003e// 'b-a'\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003epluck()\u003c/h3\u003e\u003ca id=\"user-content-pluck\" class=\"anchor\" aria-label=\"Permalink: pluck()\" href=\"#pluck\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the values of a single column/property from an array of arrays or list of elements in a new map (alias).\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function pluck( string $valuecol = null, string $indexcol = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e pluck( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evaluecol\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eindexcol\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring|null\u003c/strong\u003e \u003ccode\u003e$valuecol\u003c/code\u003e Name or path of the value property\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring|null\u003c/strong\u003e \u003ccode\u003e$indexcol\u003c/code\u003e Name or path of the index property\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with mapped entries\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis method is an alias for \u003ca href=\"#col\"\u003ecol()\u003c/a\u003e. For performance reasons, \u003ccode\u003ecol()\u003c/code\u003e should\nbe preferred because it uses one method call less than \u003ccode\u003epluck()\u003c/code\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#col\"\u003ecol()\u003c/a\u003e - Returns the values of a single column/property from an array of arrays or list of elements in a new map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#map\"\u003emap()\u003c/a\u003e - Applies a callback to each element and returns the results\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pluck\"\u003epluck()\u003c/a\u003e - Creates a key/value mapping (alias)\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#pluck\"\u003erekey()\u003c/a\u003e - Changes the keys according to the passed function\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003epop()\u003c/h3\u003e\u003ca id=\"user-content-pop\" class=\"anchor\" aria-label=\"Permalink: pop()\" href=\"#pop\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns and removes the last element from the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function pop()\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e pop()\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed\u003c/strong\u003e Last element of the map or null if empty\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;pop();\n// 'b', map contains ['a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epop\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 'b', map contains ['a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#push\"\u003epush()\u003c/a\u003e - Adds an element onto the end of the map without returning a new map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003epos\u003c/h3\u003e\u003ca id=\"user-content-pos\" class=\"anchor\" aria-label=\"Permalink: pos\" href=\"#pos\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the numerical index of the value.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function pos( $value ) : ?int\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e pos( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e ) : ?\u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|mixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Value to search for or function with (item, key) parameters return TRUE if value is found\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eint|null\u003c/strong\u003e Position of the found value (zero based) or NULL if not found\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [4 =\u0026gt; 'a', 8 =\u0026gt; 'b'] )-\u0026gt;pos( 'b' );\n// 1\n\nMap::from( [4 =\u0026gt; 'a', 8 =\u0026gt; 'b'] )-\u0026gt;pos( function( $item, $key ) {\n return $item === 'b';\n} );\n// 1\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e8\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epos\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 1\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e8\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epos\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e === \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// 1\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eBoth examples will return \"1\" because the value \"b\" is at the second position\nand the returned index is zero based so the first item has the index \"0\".\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#at\"\u003eat()\u003c/a\u003e - Returns the value at the given position\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#index\"\u003eindex()\u003c/a\u003e - Returns the numerical index of the given key\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eprefix\u003c/h3\u003e\u003ca id=\"user-content-prefix\" class=\"anchor\" aria-label=\"Permalink: prefix\" href=\"#prefix\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eAdds a prefix in front of each map entry.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function prefix( $prefix, int $depth = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e prefix( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eprefix\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edepth\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|string\u003c/strong\u003e \u003ccode\u003e$prefix\u003c/code\u003e Function with map as parameter which returns arbitrary result\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|null\u003c/strong\u003e \u003ccode\u003e$depth\u003c/code\u003e Maximum depth to dive into multi-dimensional arrays starting from \"1\"\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eBy default, nested arrays are walked recusively so all entries at all levels are prefixed.\nThe keys of the original map are preserved in the returned map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;prefix( '1-' );\n// ['1-a', '1-b']\n\nMap::from( ['a', ['b']] )-\u0026gt;prefix( '1-' );\n// ['1-a', ['1-b']]\n\nMap::from( ['a', ['b']] )-\u0026gt;prefix( '1-', 1 );\n// ['1-a', ['b']]\n\nMap::from( ['a', 'b'] )-\u0026gt;prefix( function( $item, $key ) {\n return ( ord( $item ) + ord( $key ) ) . '-';\n} );\n// ['145-a', '147-b']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eprefix\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1-\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['1-a', '1-b']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eprefix\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1-\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['1-a', ['1-b']]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eprefix\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1-\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['1-a', ['b']]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eprefix\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e ( \u003cspan class=\"pl-en\"\u003eord\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e ) + \u003cspan class=\"pl-en\"\u003eord\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) ) . \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e-\u003c/span\u003e'\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// ['145-a', '147-b']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#suffix\"\u003esuffix()\u003c/a\u003e - Adds a suffix at the end of each map entry\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eprepend()\u003c/h3\u003e\u003ca id=\"user-content-prepend\" class=\"anchor\" aria-label=\"Permalink: prepend()\" href=\"#prepend\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003ePushes an element onto the beginning of the map without returning a new map (alias).\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function prepend( $value, $key = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e prepend( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Item to add at the beginning\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string|null\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key for the item or NULL to reindex all numerical keys\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis method is an alias for the \u003ca href=\"#unshift\"\u003eunshift()\u003c/a\u003e method. For performance reasons, \u003ccode\u003eunshift()\u003c/code\u003e should\nbe preferred because it uses one method call less than \u003ccode\u003eprepend()\u003c/code\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#unshift\"\u003eunshift()\u003c/a\u003e - Underlying method with same parameters and return value but better performance\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003epull()\u003c/h3\u003e\u003ca id=\"user-content-pull\" class=\"anchor\" aria-label=\"Permalink: pull()\" href=\"#pull\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns and removes an element from the map by its key.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function pull( $key, $default = null )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e pull( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edefault\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key to retrieve the value for\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$default\u003c/code\u003e Default value if key isn't available\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed\u003c/strong\u003e Value from map or default value\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b', 'c'] )-\u0026gt;pull( 1 );\n// 'b', map contains ['a', 'c']\n\nMap::from( ['a', 'b', 'c'] )-\u0026gt;pull( 'x', 'none' );\n// 'none', map contains ['a', 'b', 'c']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epull\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'b', map contains ['a', 'c']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epull\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003enone\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'none', map contains ['a', 'b', 'c']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#get\"\u003eget()\u003c/a\u003e - Returns an element from the map by key\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003epush()\u003c/h3\u003e\u003ca id=\"user-content-push\" class=\"anchor\" aria-label=\"Permalink: push()\" href=\"#push\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eAdds an element onto the end of the map without returning a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function push( $value ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e push( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Value to add to the end\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;push( 'aa' );\n// ['a', 'b', 'aa']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epush\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaa\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a', 'b', 'aa']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#pop\"\u003epop()\u003c/a\u003e - Returns and removes the last element from the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eput()\u003c/h3\u003e\u003ca id=\"user-content-put\" class=\"anchor\" aria-label=\"Permalink: put()\" href=\"#put\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSets the given key and value in the map without returning a new map (alias).\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function put( $key, $value ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e put( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key to set the new value for\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e New element that should be set\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis method is an alias for \u003ca href=\"#set\"\u003eset()\u003c/a\u003e. For performance reasons, \u003ccode\u003eset()\u003c/code\u003e should be\npreferred because it uses one method call less than \u003ccode\u003eput()\u003c/code\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#set\"\u003eset()\u003c/a\u003e - Underlying method with same parameters and return value but better performance\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003erandom()\u003c/h3\u003e\u003ca id=\"user-content-random\" class=\"anchor\" aria-label=\"Permalink: random()\" href=\"#random\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns one or more random element from the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function random( int $max = 1 ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e random( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emax\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$max\u003c/code\u003e Maximum number of elements that should be returned\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with key/element pairs from original map in random order\u003c/li\u003e\n\u003cli\u003e@throws \u003cstrong\u003e\\InvalidArgumentException\u003c/strong\u003e If requested number of elements is less than 1\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe less elements are in the map, the less random the order will be, especially\nif the maximum number of values is high or close to the number of elements.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys of the original map are preserved in the returned map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [2, 4, 8, 16] )-\u0026gt;random();\n// [2 =\u0026gt; 8] or any other key/value pair\n\nMap::from( [2, 4, 8, 16] )-\u0026gt;random( 2 );\n// [3 =\u0026gt; 16, 0 =\u0026gt; 2] or any other key/value pair\n\nMap::from( [2, 4, 8, 16] )-\u0026gt;random( 5 );\n// [0 =\u0026gt; 2, 1 =\u0026gt; 4, 2 =\u0026gt; 8, 3 =\u0026gt; 16] in random order\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e8\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e16\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003erandom\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [2 =\u0026gt; 8] or any other key/value pair\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e8\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e16\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003erandom\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [3 =\u0026gt; 16, 0 =\u0026gt; 2] or any other key/value pair\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e8\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e16\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003erandom\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 2, 1 =\u0026gt; 4, 2 =\u0026gt; 8, 3 =\u0026gt; 16] in random order\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ereduce()\u003c/h3\u003e\u003ca id=\"user-content-reduce\" class=\"anchor\" aria-label=\"Permalink: reduce()\" href=\"#reduce\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIteratively reduces the array to a single value using a callback function.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function reduce( callable $callback, $initial = null )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e reduce( \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003einitial\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (result, value) parameters and returns result\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$initial\u003c/code\u003e Initial value when computing the result\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed\u003c/strong\u003e Value computed by the callback function\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eAfterwards, the map will be empty.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [2, 8] )-\u0026gt;reduce( function( $result, $value ) {\n return $result += $value;\n}, 10 );\n// 20 because 10 + 2 + 8 and map equals []\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e8\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ereduce\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eresult\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eresult\u003c/span\u003e += \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e;\n}, \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 20 because 10 + 2 + 8 and map equals []\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ereject()\u003c/h3\u003e\u003ca id=\"user-content-reject\" class=\"anchor\" aria-label=\"Permalink: reject()\" href=\"#reject\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRemoves all matched elements and returns a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function reject( $callback = true ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e reject( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eClosure|mixed\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (item) parameter which returns TRUE/FALSE or value to compare with\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis method is the inverse of the \u003ca href=\"#filter\"\u003efilter()\u003c/a\u003e and should return TRUE\nif the item should be removed from the returned map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eIf no callback is passed, all values which are NOT empty, null or false will be\nremoved. The keys of the original map are preserved in the returned map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [2 =\u0026gt; 'a', 6 =\u0026gt; 'b', 13 =\u0026gt; 'm', 30 =\u0026gt; 'z'] )-\u0026gt;reject( function( $value, $key ) {\n return $value \u0026lt; 'm';\n} );\n// [13 =\u0026gt; 'm', 30 =\u0026gt; 'z']\n\nMap::from( [2 =\u0026gt; 'a', 13 =\u0026gt; 'm', 30 =\u0026gt; 'z'] )-\u0026gt;reject( 'm' );\n// [2 =\u0026gt; 'a', 30 =\u0026gt; 'z']\n\nMap::from( [2 =\u0026gt; 'a', 6 =\u0026gt; null, 13 =\u0026gt; 'm'] )-\u0026gt;reject();\n// [6 =\u0026gt; null]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e6\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e13\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003em\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ez\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ereject\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e \u0026lt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003em\u003c/span\u003e'\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// [13 =\u0026gt; 'm', 30 =\u0026gt; 'z']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e13\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003em\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ez\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ereject\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003em\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [2 =\u0026gt; 'a', 30 =\u0026gt; 'z']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e6\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e13\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003em\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ereject\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [6 =\u0026gt; null]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#clear\"\u003eclear()\u003c/a\u003e - Removes all elements from the current map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#duplicates\"\u003eduplicates()\u003c/a\u003e - Returns the duplicate values from the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#except\"\u003eexcept()\u003c/a\u003e - Returns a new map without the passed element keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#only\"\u003eonly()\u003c/a\u003e - Returns only those elements specified by the keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#remove\"\u003eremove()\u003c/a\u003e - Removes an element by key\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003erekey()\u003c/h3\u003e\u003ca id=\"user-content-rekey\" class=\"anchor\" aria-label=\"Permalink: rekey()\" href=\"#rekey\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eChanges the keys according to the passed function.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function rekey( callable $callback ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e rekey( \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (value, key) parameters and returns new key\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with new keys and original values\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 2, 'b' =\u0026gt; 4] )-\u0026gt;rekey( function( $value, $key ) {\n return 'key-' . $key;\n} );\n// ['key-a' =\u0026gt; 2, 'key-b' =\u0026gt; 4]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003erekey\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ekey-\u003c/span\u003e'\u003c/span\u003e . \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// ['key-a' =\u0026gt; 2, 'key-b' =\u0026gt; 4]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#map\"\u003emap()\u003c/a\u003e - Maps new values to the existing keys using the passed function and returns a new map for the result\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#transform\"\u003etransform()\u003c/a\u003e - Creates new key/value pairs using the passed function and returns a new map for the result\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eremove()\u003c/h3\u003e\u003ca id=\"user-content-remove\" class=\"anchor\" aria-label=\"Permalink: remove()\" href=\"#remove\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRemoves one or more elements from the map by its keys without returning a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function remove( $keys ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e remove( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeys\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string\u0026gt;|array\u0026lt;int|string\u0026gt;|string|int\u003c/strong\u003e \u003ccode\u003e$keys\u003c/code\u003e List of keys\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 2 =\u0026gt; 'b'] )-\u0026gt;remove( 'a' );\n// [2 =\u0026gt; 'b']\n\nMap::from( ['a' =\u0026gt; 1, 2 =\u0026gt; 'b'] )-\u0026gt;remove( [2, 'a'] );\n// []\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eremove\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [2 =\u0026gt; 'b']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eremove\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#clear\"\u003eclear()\u003c/a\u003e - Removes all elements from the current map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#except\"\u003eexcept()\u003c/a\u003e - Returns a new map without the passed element keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#only\"\u003eonly()\u003c/a\u003e - Returns only those elements specified by the keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#reject\"\u003ereject()\u003c/a\u003e - Removes all matched elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ereplace()\u003c/h3\u003e\u003ca id=\"user-content-replace\" class=\"anchor\" aria-label=\"Permalink: replace()\" href=\"#replace\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReplaces elements in the map with the given elements without returning a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function replace( iterable $elements, bool $recursive = true ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e replace( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003erecursive\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$elements\u003c/code\u003e List of elements\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$recursive\u003c/code\u003e TRUE to replace recursively (default), FALSE to replace elements only\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe method is similar to \u003ca href=\"#merge\"\u003emerge()\u003c/a\u003e but also replaces elements with numeric keys.\nThese would be added by \u003ccode\u003emerge()\u003c/code\u003e with a new numeric key.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved in the returned map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 2 =\u0026gt; 'b'] )-\u0026gt;replace( ['a' =\u0026gt; 2] );\n// ['a' =\u0026gt; 2, 2 =\u0026gt; 'b']\n\nMap::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; ['c' =\u0026gt; 3, 'd' =\u0026gt; 4]] )-\u0026gt;replace( ['b' =\u0026gt; ['c' =\u0026gt; 9]] );\n// ['a' =\u0026gt; 1, 'b' =\u0026gt; ['c' =\u0026gt; 9, 'd' =\u0026gt; 4]]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ereplace\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 2, 2 =\u0026gt; 'b']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ereplace\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e9\u003c/span\u003e]] );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'b' =\u0026gt; ['c' =\u0026gt; 9, 'd' =\u0026gt; 4]]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ereverse()\u003c/h3\u003e\u003ca id=\"user-content-reverse\" class=\"anchor\" aria-label=\"Permalink: reverse()\" href=\"#reverse\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReverses the element order without returning a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function reverse() : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e reverse() : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;reverse();\n// ['b', 'a']\n\nMap::from( ['name' =\u0026gt; 'test', 'last' =\u0026gt; 'user'] )-\u0026gt;reverse();\n// ['last' =\u0026gt; 'user', 'name' =\u0026gt; 'test']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ereverse\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['b', 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etest\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003elast\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003euser\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ereverse\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['last' =\u0026gt; 'user', 'name' =\u0026gt; 'test']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#reversed\"\u003ereversed()\u003c/a\u003e - Reverses the element order in a copy of the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ereversed()\u003c/h3\u003e\u003ca id=\"user-content-reversed\" class=\"anchor\" aria-label=\"Permalink: reversed()\" href=\"#reversed\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReverses the element order in a copy of the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function reversed() : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e reversed() : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with a reversed copy of the elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method and a new map is created before reversing the elements.\nThus, \u003ca href=\"#reverse\"\u003ereverse()\u003c/a\u003e should be preferred for performance reasons if possible.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;reversed();\n// ['b', 'a']\n\nMap::from( ['name' =\u0026gt; 'test', 'last' =\u0026gt; 'user'] )-\u0026gt;reversed();\n// ['last' =\u0026gt; 'user', 'name' =\u0026gt; 'test']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ereversed\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['b', 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etest\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003elast\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003euser\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ereversed\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['last' =\u0026gt; 'user', 'name' =\u0026gt; 'test']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#reverse\"\u003ereverse()\u003c/a\u003e - Reverses the element order without returning a new map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ersort()\u003c/h3\u003e\u003ca id=\"user-content-rsort\" class=\"anchor\" aria-label=\"Permalink: rsort()\" href=\"#rsort\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts all elements in reverse order without maintaining the key association.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function rsort( int $options = SORT_REGULAR ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e rsort( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eSORT_REGULAR\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Sort options for \u003ccode\u003ersort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe parameter modifies how the values are compared. Possible parameter values are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSORT_REGULAR : compare elements normally (don't change types)\u003c/li\u003e\n\u003cli\u003eSORT_NUMERIC : compare elements numerically\u003c/li\u003e\n\u003cli\u003eSORT_STRING : compare elements as strings\u003c/li\u003e\n\u003cli\u003eSORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by \u003ccode\u003esetlocale()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_NATURAL : compare elements as strings using \"natural ordering\" like \u003ccode\u003enatsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are NOT preserved and elements get a new index. No new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 0] )-\u0026gt;rsort();\n// [0 =\u0026gt; 1, 1 =\u0026gt; 0]\n\nMap::from( [0 =\u0026gt; 'b', 1 =\u0026gt; 'a'] )-\u0026gt;rsort();\n// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a']\n\nMap::from( [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] )-\u0026gt;rsort();\n// [0 =\u0026gt; 'b', 1 =\u0026gt; 'C']\n\nMap::from( [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] )-\u0026gt;rsort( SORT_STRING|SORT_FLAG_CASE );\n// [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] because 'C' -\u0026gt; 'c' and 'c' \u0026gt; 'b'\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ersort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 1, 1 =\u0026gt; 0]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ersort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ersort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b', 1 =\u0026gt; 'C']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ersort\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003eSORT_STRING\u003c/span\u003e|\u003cspan class=\"pl-c1\"\u003eSORT_FLAG_CASE\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] because 'C' -\u0026gt; 'c' and 'c' \u0026gt; 'b'\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#rsorted\"\u003ersorted()\u003c/a\u003e - Sorts a copy of all elements in reverse order without maintaining the key association\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ersorted()\u003c/h3\u003e\u003ca id=\"user-content-rsorted\" class=\"anchor\" aria-label=\"Permalink: rsorted()\" href=\"#rsorted\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts a copy of all elements in reverse order without maintaining the key association.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function rsorted( int $options = SORT_REGULAR ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e rsorted( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eSORT_REGULAR\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Sort options for \u003ccode\u003ersort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe parameter modifies how the values are compared. Possible parameter values are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSORT_REGULAR : compare elements normally (don't change types)\u003c/li\u003e\n\u003cli\u003eSORT_NUMERIC : compare elements numerically\u003c/li\u003e\n\u003cli\u003eSORT_STRING : compare elements as strings\u003c/li\u003e\n\u003cli\u003eSORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by \u003ccode\u003esetlocale()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_NATURAL : compare elements as strings using \"natural ordering\" like \u003ccode\u003enatsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are NOT preserved, elements get a new index and a new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 0] )-\u0026gt;rsorted();\n// [0 =\u0026gt; 1, 1 =\u0026gt; 0]\n\nMap::from( [0 =\u0026gt; 'b', 1 =\u0026gt; 'a'] )-\u0026gt;rsorted();\n// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a']\n\nMap::from( [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] )-\u0026gt;rsorted();\n// [0 =\u0026gt; 'b', 1 =\u0026gt; 'C']\n\nMap::from( [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] )-\u0026gt;rsorted( SORT_STRING|SORT_FLAG_CASE );\n// [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] because 'C' -\u0026gt; 'c' and 'c' \u0026gt; 'b'\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ersorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 1, 1 =\u0026gt; 0]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ersorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ersorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b', 1 =\u0026gt; 'C']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ersorted\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003eSORT_STRING\u003c/span\u003e|\u003cspan class=\"pl-c1\"\u003eSORT_FLAG_CASE\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'C', 1 =\u0026gt; 'b'] because 'C' -\u0026gt; 'c' and 'c' \u0026gt; 'b'\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#rsort\"\u003ersort()\u003c/a\u003e - Sorts all elements in reverse order without maintaining the key association\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ertrim()\u003c/h3\u003e\u003ca id=\"user-content-rtrim\" class=\"anchor\" aria-label=\"Permalink: rtrim()\" href=\"#rtrim\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRemoves the passed characters from the right of all strings.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function rtrim( string $chars = \u0026quot; \\n\\r\\t\\v\\x00\u0026quot; ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e rtrim( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003echars\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003e \u003c/span\u003e\\n\\r\\t\\v\\x00\"\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$chars\u003c/code\u003e List of characters to trim\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [\u0026quot; abc\\n\u0026quot;, \u0026quot;\\tcde\\r\\n\u0026quot;] )-\u0026gt;rtrim();\n// [\u0026quot; abc\u0026quot;, \u0026quot;\\tcde\u0026quot;]\n\nMap::from( [\u0026quot;a b c\u0026quot;, \u0026quot;cbxa\u0026quot;] )-\u0026gt;rtrim( 'abc' );\n// [\u0026quot;a b \u0026quot;, \u0026quot;cbx\u0026quot;]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003e abc\u003c/span\u003e\\n\"\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\"\\t\u003cspan class=\"pl-s\"\u003ecde\u003c/span\u003e\\r\\n\"\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ertrim\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [\" abc\", \"\\tcde\"]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003ea b c\u003c/span\u003e\"\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003ecbxa\u003c/span\u003e\"\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ertrim\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [\"a b \", \"cbx\"]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#ltrim\"\u003eltrim()\u003c/a\u003e - Removes the passed characters from the left of all strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#trim\"\u003etrim()\u003c/a\u003e - Removes the passed characters from the left/right of all strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003esearch()\u003c/h3\u003e\u003ca id=\"user-content-search\" class=\"anchor\" aria-label=\"Permalink: search()\" href=\"#search\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSearches the map for a given value and return the corresponding key if successful.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function search( $value, $strict = true )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e search( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003estrict\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Item to search for\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$strict\u003c/code\u003e TRUE if type of the element should be checked too\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eint|string|null\u003c/strong\u003e Key associated to the value or null if not found\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b', 'c'] )-\u0026gt;search( 'b' );\n// 1\n\nMap::from( [1, 2, 3] )-\u0026gt;search( '2', true );\n// null because the types doesn't match (int vs. string)\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esearch\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 1\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esearch\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e2\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// null because the types doesn't match (int vs. string)\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003esep()\u003c/h3\u003e\u003ca id=\"user-content-sep\" class=\"anchor\" aria-label=\"Permalink: sep()\" href=\"#sep\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSets the seperator for paths to values in multi-dimensional arrays or objects.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public static function sep( string $char ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003estatic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e sep( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003echar\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$char\u003c/code\u003e Separator character, e.g. \".\" for \"key.to.value\" instead of \"key/to/value\"\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Same map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis method only changes the separator for the current map instance. To\nchange the separator for all maps created afterwards, use the static\n\u003ca href=\"#delimiter\"\u003eMap::delimiter()\u003c/a\u003e method instead.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['foo' =\u0026gt; ['bar' =\u0026gt; 'baz']] )-\u0026gt;sep( '.' )-\u0026gt;get( 'foo.bar' );\n// 'baz'\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esep\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.\u003c/span\u003e'\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003eget\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo.bar\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'baz'\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#delimiter\"\u003edelimiter()\u003c/a\u003e - Sets or returns the seperator for paths to values in multi-dimensional arrays or objects\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eset()\u003c/h3\u003e\u003ca id=\"user-content-set\" class=\"anchor\" aria-label=\"Permalink: set()\" href=\"#set\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSets an element in the map by key without returning a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function set( $key, $value ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e set( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key to set the new value for\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e New element that should be set\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a'] )-\u0026gt;set( 1, 'b' );\n// [0 =\u0026gt; 'a', 1 =\u0026gt; 'b']\n\nMap::from( ['a'] )-\u0026gt;set( 0, 'b' );\n// [0 =\u0026gt; 'b']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eset\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'a', 1 =\u0026gt; 'b']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eset\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#get\"\u003eget()\u003c/a\u003e - Returns an element from the map by key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#with\"\u003ewith()\u003c/a\u003e - Returns a copy of the map with the element at the given index replaced with the given value\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eshift()\u003c/h3\u003e\u003ca id=\"user-content-shift\" class=\"anchor\" aria-label=\"Permalink: shift()\" href=\"#shift\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns and removes the first element from the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function shift()\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e shift()\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003emixed|null\u003c/strong\u003e Value from map or null if not found\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;shift();\n// 'a'\n\nMap::from( [] )-\u0026gt;shift();\n// null\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eshift\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 'a'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eshift\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// null\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003ePerformance note:\u003c/strong\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe bigger the list, the higher the performance impact because \u003ccode\u003eshift()\u003c/code\u003e\nreindexes all existing elements. Usually, it's better to \u003ca href=\"#reverse\"\u003ereverse()\u003c/a\u003e\nthe list and \u003ca href=\"#pop\"\u003epop()\u003c/a\u003e entries from the list afterwards if a significant\nnumber of elements should be removed from the list:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$map-\u0026gt;reverse()-\u0026gt;pop();\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003ereverse\u003c/span\u003e()-\u0026gt;\u003cspan class=\"pl-en\"\u003epop\u003c/span\u003e();\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003einstead of\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$map-\u0026gt;shift();\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003eshift\u003c/span\u003e();\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#unshift\"\u003eunshift()\u003c/a\u003e - Pushes an element onto the beginning of the map without returning a new map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eshuffle()\u003c/h3\u003e\u003ca id=\"user-content-shuffle\" class=\"anchor\" aria-label=\"Permalink: shuffle()\" href=\"#shuffle\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eShuffles the elements in the map without returning a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function shuffle( bool $assoc = false ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e shuffle( \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eassoc\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$assoc\u003c/code\u003e True to preserve keys, false to assign new keys\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [2 =\u0026gt; 'a', 4 =\u0026gt; 'b'] )-\u0026gt;shuffle();\n// ['a', 'b'] in random order with new keys\n\nMap::from( [2 =\u0026gt; 'a', 4 =\u0026gt; 'b'] )-\u0026gt;shuffle( true );\n// [2 =\u0026gt; 'a', 4 =\u0026gt; 'b'] in random order with keys preserved\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eshuffle\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a', 'b'] in random order with new keys\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eshuffle\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [2 =\u0026gt; 'a', 4 =\u0026gt; 'b'] in random order with keys preserved\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#shuffled\"\u003eshuffled()\u003c/a\u003e - Shuffles the elements in a copy of the map.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eshuffled()\u003c/h3\u003e\u003ca id=\"user-content-shuffled\" class=\"anchor\" aria-label=\"Permalink: shuffled()\" href=\"#shuffled\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eShuffles the elements in a copy of the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function shuffled( bool $assoc = false ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e shuffled( \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eassoc\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$assoc\u003c/code\u003e True to preserve keys, false to assign new keys\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with a shuffled copy of the elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [2 =\u0026gt; 'a', 4 =\u0026gt; 'b'] )-\u0026gt;shuffled();\n// ['a', 'b'] in random order with new keys\n\nMap::from( [2 =\u0026gt; 'a', 4 =\u0026gt; 'b'] )-\u0026gt;shuffled( true );\n// [2 =\u0026gt; 'a', 4 =\u0026gt; 'b'] in random order with keys preserved\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eshuffled\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a', 'b'] in random order with new keys\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eshuffled\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [2 =\u0026gt; 'a', 4 =\u0026gt; 'b'] in random order with keys preserved\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#shuffle\"\u003eshuffle()\u003c/a\u003e - Shuffles the elements in the map without returning a new map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eskip()\u003c/h3\u003e\u003ca id=\"user-content-skip\" class=\"anchor\" aria-label=\"Permalink: skip()\" href=\"#skip\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns a new map with the given number of items skipped.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function skip( $offset ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e skip( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoffset\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|int\u003c/strong\u003e \u003ccode\u003e$offset\u003c/code\u003e Number of items to skip or function($item, $key) returning true for skipped items\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys of the items returned in the new map are the same as in the original one.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [1, 2, 3, 4] )-\u0026gt;skip( 2 );\n// [2 =\u0026gt; 3, 3 =\u0026gt; 4]\n\nMap::from( [1, 2, 3, 4] )-\u0026gt;skip( function( $item, $key ) {\n return $item \u0026lt; 4;\n} );\n// [3 =\u0026gt; 4]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eskip\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [2 =\u0026gt; 3, 3 =\u0026gt; 4]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eskip\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e \u0026lt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// [3 =\u0026gt; 4]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eslice()\u003c/h3\u003e\u003ca id=\"user-content-slice\" class=\"anchor\" aria-label=\"Permalink: slice()\" href=\"#slice\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns a map with the slice from the original map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function slice( int $offset, int $length = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e slice( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoffset\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elength\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$offset\u003c/code\u003e Number of elements to start from\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|null\u003c/strong\u003e \u003ccode\u003e$length\u003c/code\u003e Number of elements to return or NULL for no limit\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe rules for offsets are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eIf offset is non-negative, the sequence will start at that offset\u003c/li\u003e\n\u003cli\u003eIf offset is negative, the sequence will start that far from the end\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eSimilar for the length:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eIf length is given and is positive, then the sequence will have up to that many elements in it\u003c/li\u003e\n\u003cli\u003eIf the array is shorter than the length, then only the available array elements will be present\u003c/li\u003e\n\u003cli\u003eIf length is given and is negative then the sequence will stop that many elements from the end\u003c/li\u003e\n\u003cli\u003eIf it is omitted, then the sequence will have everything from offset up until the end\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys of the items returned in the new map are the same as in the original one.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b', 'c'] )-\u0026gt;slice( 1 );\n// ['b', 'c']\n\nMap::from( ['a', 'b', 'c'] )-\u0026gt;slice( 1, 1 );\n// ['b']\n\nMap::from( ['a', 'b', 'c', 'd'] )-\u0026gt;slice( -2, -1 );\n// ['c']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eslice\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['b', 'c']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eslice\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['b']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eslice\u003c/span\u003e( -\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, -\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['c']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#take\"\u003etake()\u003c/a\u003e - Returns a new map with the given number of items.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003esome()\u003c/h3\u003e\u003ca id=\"user-content-some\" class=\"anchor\" aria-label=\"Permalink: some()\" href=\"#some\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if at least one element passes the test or is part of the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function some( $values, bool $strict = false ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e some( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalues\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003estrict\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|iterable|mixed\u003c/strong\u003e \u003ccode\u003e$values\u003c/code\u003e Anonymous function with (item, key) parameter, element or list of elements to test against\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$strict\u003c/code\u003e TRUE to check the type too, using FALSE '1' and 1 will be the same\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if at least one element is available in map, FALSE if the map contains none of them\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;some( 'a' );\n// true\n\nMap::from( ['a', 'b'] )-\u0026gt;some( ['a', 'c'] );\n// true\n\nMap::from( ['a', 'b'] )-\u0026gt;some( function( $item, $key ) {\n return $item === 'a'\n} );\n// true\n\nMap::from( ['a', 'b'] )-\u0026gt;some( ['c', 'd'] );\n// false\n\nMap::from( ['1', '2'] )-\u0026gt;some( [2], true );\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esome\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esome\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;some( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e === \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e\n} );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esome\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e2\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esome\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#every\"\u003eevery()\u003c/a\u003e - Verifies that all elements pass the test of the given callback\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#any\"\u003eany()\u003c/a\u003e - Tests if at least one element satisfies the callback function\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003esort()\u003c/h3\u003e\u003ca id=\"user-content-sort\" class=\"anchor\" aria-label=\"Permalink: sort()\" href=\"#sort\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts all elements without maintaining the key association.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function sort( int $options = SORT_REGULAR ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e sort( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eSORT_REGULAR\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Sort options for PHP \u003ccode\u003esort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe parameter modifies how the values are compared. Possible parameter values are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSORT_REGULAR : compare elements normally (don't change types)\u003c/li\u003e\n\u003cli\u003eSORT_NUMERIC : compare elements numerically\u003c/li\u003e\n\u003cli\u003eSORT_STRING : compare elements as strings\u003c/li\u003e\n\u003cli\u003eSORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by \u003ccode\u003esetlocale()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_NATURAL : compare elements as strings using \"natural ordering\" like \u003ccode\u003enatsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys are NOT preserved and elements get a new index. No new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 0] )-\u0026gt;sort();\n// [0 =\u0026gt; 0, 1 =\u0026gt; 1]\n\nMap::from( [0 =\u0026gt; 'b', 1 =\u0026gt; 'a'] )-\u0026gt;sort();\n// [0 =\u0026gt; 'a', 1 =\u0026gt; 'b']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 0, 1 =\u0026gt; 1]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esort\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'a', 1 =\u0026gt; 'b']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#sorted\"\u003esorted()\u003c/a\u003e - Sorts a copy of the elements using new keys\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003esorted()\u003c/h3\u003e\u003ca id=\"user-content-sorted\" class=\"anchor\" aria-label=\"Permalink: sorted()\" href=\"#sorted\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts a copy of the elements using new keys.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function sorted( int $options = SORT_REGULAR ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e sorted( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eSORT_REGULAR\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Sort options for PHP \u003ccode\u003esort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe parameter modifies how the values are compared. Possible parameter values are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSORT_REGULAR : compare elements normally (don't change types)\u003c/li\u003e\n\u003cli\u003eSORT_NUMERIC : compare elements numerically\u003c/li\u003e\n\u003cli\u003eSORT_STRING : compare elements as strings\u003c/li\u003e\n\u003cli\u003eSORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by \u003ccode\u003esetlocale()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_NATURAL : compare elements as strings using \"natural ordering\" like \u003ccode\u003enatsort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003eSORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys aren't preserved and elements get a new index and a new map is created\nbefore sorting the elements. Thus, \u003ca href=\"#sort\"\u003esort()\u003c/a\u003e should be preferred for\nperformance reasons if possible. A new map is created by calling this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 0] )-\u0026gt;sorted();\n// [0 =\u0026gt; 0, 1 =\u0026gt; 1]\n\nMap::from( [0 =\u0026gt; 'b', 1 =\u0026gt; 'a'] )-\u0026gt;sorted();\n// [0 =\u0026gt; 'a', 1 =\u0026gt; 'b']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 0, 1 =\u0026gt; 1]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esorted\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'a', 1 =\u0026gt; 'b']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#sort\"\u003esort()\u003c/a\u003e - Sorts all elements without maintaining the key association\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003esplice()\u003c/h3\u003e\u003ca id=\"user-content-splice\" class=\"anchor\" aria-label=\"Permalink: splice()\" href=\"#splice\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRemoves a portion of the map and replace it with the given replacement, then return the updated map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function splice( int $offset, int $length = null, $replacement = [] ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e splice( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoffset\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elength\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ereplacement\u003c/span\u003e = [] ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$offset\u003c/code\u003e Number of elements to start from\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|null\u003c/strong\u003e \u003ccode\u003e$length\u003c/code\u003e Number of elements to remove, NULL for all\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$replacement\u003c/code\u003e List of elements to insert\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe rules for offsets are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eIf offset is non-negative, the sequence will start at that offset\u003c/li\u003e\n\u003cli\u003eIf offset is negative, the sequence will start that far from the end\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eSimilar for the length:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eIf length is given and is positive, then the sequence will have up to that many elements in it\u003c/li\u003e\n\u003cli\u003eIf the array is shorter than the length, then only the available array elements will be present\u003c/li\u003e\n\u003cli\u003eIf length is given and is negative then the sequence will stop that many elements from the end\u003c/li\u003e\n\u003cli\u003eIf it is omitted, then the sequence will have everything from offset up until the end\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eNumerical array indexes are NOT preserved.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b', 'c'] )-\u0026gt;splice( 1 );\n// ['b', 'c'] and map contains ['a']\n\nMap::from( ['a', 'b', 'c'] )-\u0026gt;splice( 1, 1, ['x', 'y'] );\n// ['b'] and map contains ['a', 'x', 'y', 'c']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esplice\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['b', 'c'] and map contains ['a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esplice\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ey\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['b'] and map contains ['a', 'x', 'y', 'c']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003estrAfter()\u003c/h3\u003e\u003ca id=\"user-content-strafter\" class=\"anchor\" aria-label=\"Permalink: strAfter()\" href=\"#strafter\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the strings after the passed value.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function strAfter( string $value, bool $case = false, string $encoding = 'UTF-8' ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e strAfter( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecase\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eencoding\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eUTF-8\u003c/span\u003e'\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Character or string to search for\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$case\u003c/code\u003e TRUE if search should be case insensitive, FALSE if case-sensitive\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$encoding\u003c/code\u003e Character encoding of the strings, e.g. \"UTF-8\" (default), \"ASCII\", \"ISO-8859-1\", etc.\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eAll scalar values (bool, int, float, string) will be converted to strings.\nNon-scalar values as well as empty strings will be skipped and are not part of the result.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['äöüß'] )-\u0026gt;strAfter( 'ö' );\n// ['üß']\n\nMap::from( ['abc'] )-\u0026gt;strAfter( '' );\n// ['abc']\n\nMap::from( ['abc'] )-\u0026gt;strAfter( 'b' );\n// ['c']\n\nMap::from( ['abc'] )-\u0026gt;strAfter( 'c' );\n// ['']\n\nMap::from( ['abc'] )-\u0026gt;strAfter( 'x' )\n// []\n\nMap::from( [''] )-\u0026gt;strAfter( '' );\n// []\n\nMap::from( [1, 1.0, true, ['x'], new \\stdClass] )-\u0026gt;strAfter( '' );\n// ['1', '1', '1']\n\nMap::from( [0, 0.0, false, []] )-\u0026gt;strAfter( '' );\n// ['0', '0']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eäöüß\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrAfter\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eö\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['üß']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrAfter\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['abc']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrAfter\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['c']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrAfter\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrAfter\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e )\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrAfter\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1.0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e, [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrAfter\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['1', '1', '1']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0.0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e, []] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrAfter\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['0', '0']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#strbefore\"\u003estrBefore()\u003c/a\u003e - Returns the strings before the passed value\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003estrBefore()\u003c/h3\u003e\u003ca id=\"user-content-strbefore\" class=\"anchor\" aria-label=\"Permalink: strBefore()\" href=\"#strbefore\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the strings before the passed value.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function strBefore( string $value, bool $case = false, string $encoding = 'UTF-8' ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e strBefore( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecase\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eencoding\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eUTF-8\u003c/span\u003e'\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Character or string to search for\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$case\u003c/code\u003e TRUE if search should be case insensitive, FALSE if case-sensitive\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$encoding\u003c/code\u003e Character encoding of the strings, e.g. \"UTF-8\" (default), \"ASCII\", \"ISO-8859-1\", etc.\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eAll scalar values (bool, int, float, string) will be converted to strings.\nNon-scalar values as well as empty strings will be skipped and are not part of the result.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['äöüß'] )-\u0026gt;strBefore( 'ü' );\n// ['äö']\n\nMap::from( ['abc'] )-\u0026gt;strBefore( '' );\n// ['abc']\n\nMap::from( ['abc'] )-\u0026gt;strBefore( 'b' );\n// ['a']\n\nMap::from( ['abc'] )-\u0026gt;strBefore( 'a' );\n// ['']\n\nMap::from( ['abc'] )-\u0026gt;strBefore( 'x' )\n// []\n\nMap::from( [''] )-\u0026gt;strBefore( '' );\n// []\n\nMap::from( [1, 1.0, true, ['x'], new \\stdClass] )-\u0026gt;strBefore( '' );\n// ['1', '1', '1']\n\nMap::from( [0, 0.0, false, []] )-\u0026gt;strBefore( '' );\n// ['0', '0']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eäöüß\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrBefore\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eü\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['äö']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrBefore\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['abc']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrBefore\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrBefore\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrBefore\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e )\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrBefore\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// []\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1.0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e, [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrBefore\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['1', '1', '1']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e0.0\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e, []] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrBefore\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['0', '0']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#strafter\"\u003estrAfter()\u003c/a\u003e - Returns the strings after the passed value\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003estrCompare()\u003c/h3\u003e\u003ca id=\"user-content-strcompare\" class=\"anchor\" aria-label=\"Permalink: strCompare()\" href=\"#strcompare\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCompares the value against all map elements.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function strCompare( string $value, bool $case = true ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e strCompare( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecase\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Value to compare map elements to\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$case\u003c/code\u003e TRUE if comparison is case sensitive, FALSE to ignore upper/lower case\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE If at least one element matches, FALSE if value is not in map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eAll scalar values (bool, float, int and string) are casted to string values before\ncomparing to the given value. Non-scalar values in the map are ignored.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['foo', 'bar'] )-\u0026gt;strCompare( 'foo' );\n// true\n\nMap::from( ['foo', 'bar'] )-\u0026gt;strCompare( 'Foo', false );\n// true (case insensitive)\n\nMap::from( [123, 12.3] )-\u0026gt;strCompare( '12.3' );\n// true\n\nMap::from( [false, true] )-\u0026gt;strCompare( '1' );\n// true\n\nMap::from( ['foo', 'bar'] )-\u0026gt;strCompare( 'Foo' );\n// false (case sensitive)\n\nMap::from( ['foo', 'bar'] )-\u0026gt;strCompare( 'baz' );\n// false\n\nMap::from( [new \\stdClass(), 'bar'] )-\u0026gt;strCompare( 'foo' );\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrCompare\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrCompare\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eFoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true (case insensitive)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e123\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e12.3\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrCompare\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e12.3\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrCompare\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrCompare\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eFoo\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false (case sensitive)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrCompare\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebaz\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e(), \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebar\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrCompare\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#contains\"\u003econtains()\u003c/a\u003e - Tests if an item exists in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#in\"\u003ein()\u003c/a\u003e - Tests if element is included\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#includes\"\u003eincludes()\u003c/a\u003e - Tests if element is included\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003estrContains()\u003c/h3\u003e\u003ca id=\"user-content-strcontains\" class=\"anchor\" aria-label=\"Permalink: strContains()\" href=\"#strcontains\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if at least one of the passed strings is part of at least one entry.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function strContains( $value, string $encoding = 'UTF-8' ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e strContains( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eencoding\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eUTF-8\u003c/span\u003e'\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003earray|string\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e The string or list of strings to search for in each entry\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$encoding\u003c/code\u003e Character encoding of the strings, e.g. \"UTF-8\" (default), \"ASCII\", \"ISO-8859-1\", etc.\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if one of the entries contains one of the strings, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['abc'] )-\u0026gt;strContains( '' );\n// true\n\nMap::from( ['abc'] )-\u0026gt;strContains( 'a' );\n// true\n\nMap::from( ['abc'] )-\u0026gt;strContains( 'bc' );\n// true\n\nMap::from( [12345] )-\u0026gt;strContains( '23' );\n// true\n\nMap::from( [123.4] )-\u0026gt;strContains( 23.4 );\n// true\n\nMap::from( [12345] )-\u0026gt;strContains( false );\n// true ('12345' contains '')\n\nMap::from( [12345] )-\u0026gt;strContains( true );\n// true ('12345' contains '1')\n\nMap::from( [false] )-\u0026gt;strContains( false );\n// true ('' contains '')\n\nMap::from( [''] )-\u0026gt;strContains( false );\n// true ('' contains '')\n\nMap::from( ['abc'] )-\u0026gt;strContains( ['b', 'd'] );\n// true\n\nMap::from( ['abc'] )-\u0026gt;strContains( 'c', 'ASCII' );\n// true\n\nMap::from( ['abc'] )-\u0026gt;strContains( 'd' );\n// false\n\nMap::from( ['abc'] )-\u0026gt;strContains( 'cb' );\n// false\n\nMap::from( [23456] )-\u0026gt;strContains( true );\n// false ('23456' doesn't contain '1')\n\nMap::from( [false] )-\u0026gt;strContains( 0 );\n// false ('' doesn't contain '0')\n\nMap::from( ['abc'] )-\u0026gt;strContains( ['d', 'e'] );\n// false\n\nMap::from( ['abc'] )-\u0026gt;strContains( 'cb', 'ASCII' );\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebc\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e12345\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e23\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e123.4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e23.4\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e12345\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('12345' contains '')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e12345\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('12345' contains '1')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('' contains '')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('' contains '')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eASCII\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e23456\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false ('23456' doesn't contain '1')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false ('' doesn't contain '0')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ee\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eASCII\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#strcontainsall\"\u003estrContainsAll()\u003c/a\u003e - Tests if all of the entries contains one of the passed strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003estrContainsAll()\u003c/h3\u003e\u003ca id=\"user-content-strcontainsall\" class=\"anchor\" aria-label=\"Permalink: strContainsAll()\" href=\"#strcontainsall\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if all of the entries contains one of the passed strings.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function strContainsAll( $value, string $encoding = 'UTF-8' ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e strContainsAll( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eencoding\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eUTF-8\u003c/span\u003e'\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003earray|string\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e The string or list of strings to search for in each entry\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$encoding\u003c/code\u003e Character encoding of the strings, e.g. \"UTF-8\" (default), \"ASCII\", \"ISO-8859-1\", etc.\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if all of the entries contains at least one of the strings, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['abc', 'def'] )-\u0026gt;strContainsAll( '' );\n// true\n\nMap::from( ['abc', 'cba'] )-\u0026gt;strContainsAll( 'a' );\n// true\n\nMap::from( ['abc', 'bca'] )-\u0026gt;strContainsAll( 'bc' );\n// true\n\nMap::from( [12345, '230'] )-\u0026gt;strContainsAll( '23' );\n// true\n\nMap::from( [123.4, 23.42] )-\u0026gt;strContainsAll( 23.4 );\n// true\n\nMap::from( [12345, '234'] )-\u0026gt;strContainsAll( [true, false] );\n// true ('12345' contains '1' and '234' contains '')\n\nMap::from( ['', false] )-\u0026gt;strContainsAll( false );\n// true ('' contains '')\n\nMap::from( ['abc', 'def'] )-\u0026gt;strContainsAll( ['b', 'd'] );\n// true\n\nMap::from( ['abc', 'ecf'] )-\u0026gt;strContainsAll( 'c', 'ASCII' );\n// true\n\nMap::from( ['abc', 'def'] )-\u0026gt;strContainsAll( 'd' );\n// false\n\nMap::from( ['abc', 'cab'] )-\u0026gt;strContainsAll( 'cb' );\n// false\n\nMap::from( [23456, '123'] )-\u0026gt;strContains( true );\n// false ('23456' doesn't contain '1')\n\nMap::from( [false, '000'] )-\u0026gt;strContains( 0 );\n// false ('' doesn't contain '0')\n\nMap::from( ['abc', 'acf'] )-\u0026gt;strContainsAll( ['d', 'e'] );\n// false\n\nMap::from( ['abc', 'bca'] )-\u0026gt;strContainsAll( 'cb', 'ASCII' );\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003edef\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContainsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecba\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContainsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebca\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContainsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebc\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e12345\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e230\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContainsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e23\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e123.4\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e23.42\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContainsAll\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e23.4\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e12345\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e234\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContainsAll\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// true ('12345' contains '1' and '234' contains '')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContainsAll\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true ('' contains '')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003edef\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContainsAll\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eecf\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContainsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eASCII\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003edef\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContainsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecab\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContainsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e23456\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e123\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false ('23456' doesn't contain '1')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e000\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContains\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false ('' doesn't contain '0')\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eacf\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContainsAll\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ee\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebca\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrContainsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eASCII\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#strcontains\"\u003estrContains()\u003c/a\u003e - Tests if at least one of the passed strings is part of at least one entry\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003estrEnds()\u003c/h3\u003e\u003ca id=\"user-content-strends\" class=\"anchor\" aria-label=\"Permalink: strEnds()\" href=\"#strends\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if at least one of the entries ends with one of the passed strings.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function strEnds( $value, string $encoding = 'UTF-8' ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e strEnds( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eencoding\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eUTF-8\u003c/span\u003e'\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003earray|string\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e The string or list of strings to search for in each entry\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$encoding\u003c/code\u003e Character encoding of the strings, e.g. \"UTF-8\" (default), \"ASCII\", \"ISO-8859-1\", etc.\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if one of the entries ends with the string, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['abc'] )-\u0026gt;strEnds( '' );\n// true\n\nMap::from( ['abc'] )-\u0026gt;strEnds( 'c' );\n// true\n\nMap::from( ['abc'] )-\u0026gt;strEnds( 'bc' );\n// true\n\nMap::from( ['abc'] )-\u0026gt;strEnds( ['b', 'c'] );\n// true\n\nMap::from( ['abc'] )-\u0026gt;strEnds( 'c', 'ASCII' );\n// true\n\nMap::from( ['abc'] )-\u0026gt;strEnds( 'a' );\n// false\n\nMap::from( ['abc'] )-\u0026gt;strEnds( 'cb' );\n// false\n\nMap::from( ['abc'] )-\u0026gt;strEnds( ['d', 'b'] );\n// false\n\nMap::from( ['abc'] )-\u0026gt;strEnds( 'cb', 'ASCII' );\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEnds\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEnds\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEnds\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebc\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEnds\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEnds\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eASCII\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEnds\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEnds\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEnds\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEnds\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eASCII\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#strendsall\"\u003estrEndsAll()\u003c/a\u003e - Tests if all of the entries ends with at least one of the passed strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003estrEndsAll()\u003c/h3\u003e\u003ca id=\"user-content-strendsall\" class=\"anchor\" aria-label=\"Permalink: strEndsAll()\" href=\"#strendsall\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if all of the entries ends with at least one of the passed strings.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function strEndsAll( $value, string $encoding = 'UTF-8' ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e strEndsAll( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eencoding\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eUTF-8\u003c/span\u003e'\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003earray|string\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e The string or list of strings to search for in each entry\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$encoding\u003c/code\u003e Character encoding of the strings, e.g. \"UTF-8\" (default), \"ASCII\", \"ISO-8859-1\", etc.\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if all of the entries ends with at least one of the strings, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['abc', 'def'] )-\u0026gt;strEndsAll( '' );\n// true\n\nMap::from( ['abc', 'bac'] )-\u0026gt;strEndsAll( 'c' );\n// true\n\nMap::from( ['abc', 'cbc'] )-\u0026gt;strEndsAll( 'bc' );\n// true\n\nMap::from( ['abc', 'def'] )-\u0026gt;strEndsAll( ['c', 'f'] );\n// true\n\nMap::from( ['abc', 'efc'] )-\u0026gt;strEndsAll( 'c', 'ASCII' );\n// true\n\nMap::from( ['abc', 'fed'] )-\u0026gt;strEndsAll( 'd' );\n// false\n\nMap::from( ['abc', 'bca'] )-\u0026gt;strEndsAll( 'ca' );\n// false\n\nMap::from( ['abc', 'acf'] )-\u0026gt;strEndsAll( ['a', 'c'] );\n// false\n\nMap::from( ['abc', 'bca'] )-\u0026gt;strEndsAll( 'ca', 'ASCII' );\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003edef\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEndsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebac\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEndsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecbc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEndsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebc\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003edef\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEndsAll\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ef\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eefc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEndsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eASCII\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efed\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEndsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebca\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEndsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eca\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eacf\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEndsAll\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebca\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrEndsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eca\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eASCII\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#strends\"\u003estrEnds()\u003c/a\u003e - Tests if at least one of the entries ends with one of the passed strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003estring()\u003c/h3\u003e\u003ca id=\"user-content-string\" class=\"anchor\" aria-label=\"Permalink: string()\" href=\"#string\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns an element by key and casts it to string if possible.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function string( $key, $default = '' ) : string\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e string( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edefault\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key or path to the requested item\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$default\u003c/code\u003e Default value if key isn't found (will be casted to string)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003estring\u003c/strong\u003e Value from map or default value\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis does also work to map values from multi-dimensional arrays by passing the keys\nof the arrays separated by the delimiter (\"/\" by default), e.g. \u003ccode\u003ekey1/key2/key3\u003c/code\u003e\nto get \u003ccode\u003eval\u003c/code\u003e from \u003ccode\u003e['key1' =\u0026gt; ['key2' =\u0026gt; ['key3' =\u0026gt; 'val']]]\u003c/code\u003e. The same applies to\npublic properties of objects or objects implementing \u003ccode\u003e__isset()\u003c/code\u003e and \u003ccode\u003e__get()\u003c/code\u003e methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; true] )-\u0026gt;string( 'a' );\n// '1'\n\nMap::from( ['a' =\u0026gt; 1] )-\u0026gt;string( 'a' );\n// '1'\n\nMap::from( ['a' =\u0026gt; 1.1] )-\u0026gt;string( 'a' );\n// '1.1'\n\nMap::from( ['a' =\u0026gt; 'abc'] )-\u0026gt;string( 'a' );\n// 'abc'\n\nMap::from( ['a' =\u0026gt; ['b' =\u0026gt; ['c' =\u0026gt; 'yes']]] )-\u0026gt;string( 'a/b/c' );\n// 'yes'\n\nMap::from( [] )-\u0026gt;string( 'c', function() { return 'no'; } );\n// 'no'\n\nMap::from( [] )-\u0026gt;string( 'b' );\n// ''\n\nMap::from( ['b' =\u0026gt; ''] )-\u0026gt;string( 'b' );\n// ''\n\nMap::from( ['b' =\u0026gt; null] )-\u0026gt;string( 'b' );\n// ''\n\nMap::from( ['b' =\u0026gt; [true]] )-\u0026gt;string( 'b' );\n// ''\n\nMap::from( ['b' =\u0026gt; '#resource'] )-\u0026gt;string( 'b' );\n// '' (resources are not scalar)\n\nMap::from( ['b' =\u0026gt; new \\stdClass] )-\u0026gt;string( 'b' );\n// '' (objects are not scalar)\n\nMap::from( [] )-\u0026gt;string( 'c', new \\Exception( 'error' ) );\n// throws exception\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estring\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// '1'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estring\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// '1'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1.1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estring\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// '1.1'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estring\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'abc'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eyes\u003c/span\u003e'\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estring\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea/b/c\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 'yes'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estring\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e() { \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eno\u003c/span\u003e'\u003c/span\u003e; } );\n\u003cspan class=\"pl-c\"\u003e// 'no'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estring\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ''\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estring\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ''\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estring\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ''\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estring\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ''\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e#resource\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estring\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// '' (resources are not scalar)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estring\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// '' (objects are not scalar)\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estring\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003eException\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eerror\u003c/span\u003e'\u003c/span\u003e ) );\n\u003cspan class=\"pl-c\"\u003e// throws exception\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#bool\"\u003ebool()\u003c/a\u003e - Returns an element by key and casts it to boolean if possible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#cast\"\u003ecast()\u003c/a\u003e - Casts all entries to the passed type\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#get\"\u003eget()\u003c/a\u003e - Returns an element from the map by key\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#float\"\u003efloat()\u003c/a\u003e - Returns an element by key and casts it to float if possible\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#int\"\u003eint()\u003c/a\u003e - Returns an element by key and casts it to integer if possible\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003estrLower()\u003c/h3\u003e\u003ca id=\"user-content-strlower\" class=\"anchor\" aria-label=\"Permalink: strLower()\" href=\"#strlower\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eConverts all alphabetic characters in strings to lower case.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function strLower( string $encoding = 'UTF-8' ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e strLower( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eencoding\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eUTF-8\u003c/span\u003e'\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$encoding\u003c/code\u003e Character encoding of the strings, e.g. \"UTF-8\" (default), \"ASCII\", \"ISO-8859-1\", etc.\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['My String'] )-\u0026gt;strLower();\n// [\u0026quot;my string\u0026quot;]\n\nMap::from( ['Τάχιστη'] )-\u0026gt;strLower();\n// [\u0026quot;τάχιστη\u0026quot;]\n\nMap::from( ['Äpfel', 'Birnen'] )-\u0026gt;strLower( 'ISO-8859-1' );\n// [\u0026quot;äpfel\u0026quot;, \u0026quot;birnen\u0026quot;]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eMy String\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrLower\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [\"my string\"]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eΤάχιστη\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrLower\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [\"τάχιστη\"]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eÄpfel\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eBirnen\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrLower\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eISO-8859-1\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [\"äpfel\", \"birnen\"]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#strupper\"\u003estrUpper()\u003c/a\u003e - Converts all alphabetic characters in strings to upper case\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003estrReplace()\u003c/h3\u003e\u003ca id=\"user-content-strreplace\" class=\"anchor\" aria-label=\"Permalink: strReplace()\" href=\"#strreplace\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReplaces all occurrences of the search string with the replacement string.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function strReplace( $search, $replace, bool $case = false ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e strReplace( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003esearch\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ereplace\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecase\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003efalse\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003earray|string\u003c/strong\u003e \u003ccode\u003e$search\u003c/code\u003e String or list of strings to search for\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003earray|string\u003c/strong\u003e \u003ccode\u003e$replace\u003c/code\u003e String or list of strings of replacement strings\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$case\u003c/code\u003e TRUE if replacements should be case insensitive, FALSE if case-sensitive\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eIf you use an array of strings for search or search/replacement, the order of\nthe strings matters! Each search string found is replaced by the corresponding\nreplacement string at the same position.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eIn case of array parameters and if the number of replacement strings is less\nthan the number of search strings, the search strings with no corresponding\nreplacement string are replaced with empty strings. Replacement strings with\nno corresponding search string are ignored.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eAn array parameter for the replacements is only allowed if the search parameter\nis an array of strings too!\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eBecause the method replaces from left to right, it might replace a previously\ninserted value when doing multiple replacements. Entries which are non-string\nvalues are left untouched.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['google.com', 'aimeos.com'] )-\u0026gt;strReplace( '.com', '.de' );\n// ['google.de', 'aimeos.de']\n\nMap::from( ['google.com', 'aimeos.org'] )-\u0026gt;strReplace( ['.com', '.org'], '.de' );\n// ['google.de', 'aimeos.de']\n\nMap::from( ['google.com', 'aimeos.org'] )-\u0026gt;strReplace( ['.com', '.org'], ['.de'] );\n// ['google.de', 'aimeos']\n\nMap::from( ['google.com', 'aimeos.org'] )-\u0026gt;strReplace( ['.com', '.org'], ['.fr', '.de'] );\n// ['google.fr', 'aimeos.de']\n\nMap::from( ['google.com', 'aimeos.com'] )-\u0026gt;strReplace( ['.com', '.co'], ['.co', '.de', '.fr'] );\n// ['google.de', 'aimeos.de']\n\nMap::from( ['google.com', 'aimeos.com', 123] )-\u0026gt;strReplace( '.com', '.de' );\n// ['google.de', 'aimeos.de', 123]\n\nMap::from( ['GOOGLE.COM', 'AIMEOS.COM'] )-\u0026gt;strReplace( '.com', '.de', true );\n// ['GOOGLE.de', 'AIMEOS.de']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003egoogle.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaimeos.com\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrReplace\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.de\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['google.de', 'aimeos.de']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003egoogle.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaimeos.org\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrReplace\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.org\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.de\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['google.de', 'aimeos.de']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003egoogle.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaimeos.org\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrReplace\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.org\u003c/span\u003e'\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.de\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['google.de', 'aimeos']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003egoogle.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaimeos.org\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrReplace\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.org\u003c/span\u003e'\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.fr\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.de\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['google.fr', 'aimeos.de']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003egoogle.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaimeos.com\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrReplace\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.co\u003c/span\u003e'\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.co\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.de\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.fr\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['google.de', 'aimeos.de']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003egoogle.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaimeos.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e123\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrReplace\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.de\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['google.de', 'aimeos.de', 123]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eGOOGLE.COM\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eAIMEOS.COM\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrReplace\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.com\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e.de\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['GOOGLE.de', 'AIMEOS.de']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003estrStarts()\u003c/h3\u003e\u003ca id=\"user-content-strstarts\" class=\"anchor\" aria-label=\"Permalink: strStarts()\" href=\"#strstarts\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if at least one of the entries starts with at least one of the passed strings.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function strStarts( $value, string $encoding = 'UTF-8' ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e strStarts( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eencoding\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eUTF-8\u003c/span\u003e'\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003earray|string\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e The string or list of strings to search for in each entry\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$encoding\u003c/code\u003e Character encoding of the strings, e.g. \"UTF-8\" (default), \"ASCII\", \"ISO-8859-1\", etc.\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if one of the entries starts with one of the strings, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['abc'] )-\u0026gt;strStarts( '' );\n// true\n\nMap::from( ['abc'] )-\u0026gt;strStarts( 'a' );\n// true\n\nMap::from( ['abc'] )-\u0026gt;strStarts( 'ab' );\n// true\n\nMap::from( ['abc'] )-\u0026gt;strStarts( ['a', 'b'] );\n// true\n\nMap::from( ['abc'] )-\u0026gt;strStarts( 'ab', 'ASCII' );\n// true\n\nMap::from( ['abc'] )-\u0026gt;strStarts( 'b' );\n// false\n\nMap::from( ['abc'] )-\u0026gt;strStarts( 'bc' );\n// false\n\nMap::from( ['abc'] )-\u0026gt;strStarts( ['b', 'c'] );\n// false\n\nMap::from( ['abc'] )-\u0026gt;strStarts( 'bc', 'ASCII' );\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStarts\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStarts\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStarts\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eab\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStarts\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStarts\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eab\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eASCII\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStarts\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStarts\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebc\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStarts\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStarts\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eASCII\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#strstartsall\"\u003estrStartsAll()\u003c/a\u003e - Tests if all of the entries starts with one of the passed strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003estrStartsAll()\u003c/h3\u003e\u003ca id=\"user-content-strstartsall\" class=\"anchor\" aria-label=\"Permalink: strStartsAll()\" href=\"#strstartsall\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTests if all of the entries starts with one of the passed strings.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function strStartsAll( $value, string $encoding = 'UTF-8' ) : bool\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e strStartsAll( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eencoding\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eUTF-8\u003c/span\u003e'\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003earray|string\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e The string or list of strings to search for in each entry\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$encoding\u003c/code\u003e Character encoding of the strings, e.g. \"UTF-8\" (default), \"ASCII\", \"ISO-8859-1\", etc.\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003ebool\u003c/strong\u003e TRUE if one of the entries starts with one of the strings, FALSE if not\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['abc', 'def'] )-\u0026gt;strStartsAll( '' );\n// true\n\nMap::from( ['abc', 'acb'] )-\u0026gt;strStartsAll( 'a' );\n// true\n\nMap::from( ['abc', 'aba'] )-\u0026gt;strStartsAll( 'ab' );\n// true\n\nMap::from( ['abc', 'def'] )-\u0026gt;strStartsAll( ['a', 'd'] );\n// true\n\nMap::from( ['abc', 'acf'] )-\u0026gt;strStartsAll( 'a', 'ASCII' );\n// true\n\nMap::from( ['abc', 'def'] )-\u0026gt;strStartsAll( 'd' );\n// false\n\nMap::from( ['abc', 'bca'] )-\u0026gt;strStartsAll( 'ab' );\n// false\n\nMap::from( ['abc', 'bac'] )-\u0026gt;strStartsAll( ['a', 'c'] );\n// false\n\nMap::from( ['abc', 'cab'] )-\u0026gt;strStartsAll( 'ab', 'ASCII' );\n// false\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003edef\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStartsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eacb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStartsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaba\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStartsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eab\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003edef\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStartsAll\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eacf\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStartsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eASCII\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003edef\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStartsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebca\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStartsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eab\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebac\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStartsAll\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecab\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrStartsAll\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eab\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eASCII\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#strstarts\"\u003estrStarts()\u003c/a\u003e - Tests if at least one of the entries starts with at least one of the passed strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003estrUpper()\u003c/h3\u003e\u003ca id=\"user-content-strupper\" class=\"anchor\" aria-label=\"Permalink: strUpper()\" href=\"#strupper\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eConverts all alphabetic characters in strings to upper case.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function strUpper( string $encoding = 'UTF-8' ) :self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e strUpper( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eencoding\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eUTF-8\u003c/span\u003e'\u003c/span\u003e ) :\u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$encoding\u003c/code\u003e Character encoding of the strings, e.g. \"UTF-8\" (default), \"ASCII\", \"ISO-8859-1\", etc.\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['My String'] )-\u0026gt;strUpper();\n// [\u0026quot;MY STRING\u0026quot;]\n\nMap::from( ['τάχιστη'] )-\u0026gt;strUpper();\n// [\u0026quot;ΤΆΧΙΣΤΗ\u0026quot;]\n\nMap::from( ['äpfel', 'birnen'] )-\u0026gt;strUpper( 'ISO-8859-1' );\n// [\u0026quot;ÄPFEL\u0026quot;, \u0026quot;BIRNEN\u0026quot;]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eMy String\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrUpper\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [\"MY STRING\"]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eτάχιστη\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrUpper\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [\"ΤΆΧΙΣΤΗ\"]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eäpfel\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ebirnen\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrUpper\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eISO-8859-1\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [\"ÄPFEL\", \"BIRNEN\"]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#strlower\"\u003estrLower()\u003c/a\u003e - Converts all alphabetic characters in strings to lower case\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003esuffix\u003c/h3\u003e\u003ca id=\"user-content-suffix\" class=\"anchor\" aria-label=\"Permalink: suffix\" href=\"#suffix\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eAdds a suffix at the end of each map entry.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function suffix( $suffix, int $depth = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e suffix( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003esuffix\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edepth\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|string\u003c/strong\u003e \u003ccode\u003e$suffix\u003c/code\u003e Function with map as parameter which returns arbitrary result\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|null\u003c/strong\u003e \u003ccode\u003e$depth\u003c/code\u003e Maximum depth to dive into multi-dimensional arrays starting from \"1\"\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eBy defaul, nested arrays are walked recusively so all entries at all levels are suffixed.\nThe keys are preserved using this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;suffix( '-1' );\n// ['a-1', 'b-1']\n\nMap::from( ['a', ['b']] )-\u0026gt;suffix( '-1' );\n// ['a-1', ['b-1']]\n\nMap::from( ['a', ['b']] )-\u0026gt;suffix( '-1', 1 );\n// ['a-1', ['b']]\n\nMap::from( ['a', 'b'] )-\u0026gt;suffix( function( $item, $key ) {\n return '-' . ( ord( $item ) + ord( $key ) );\n} );\n// ['a-145', 'b-147']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esuffix\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e-1\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a-1', 'b-1']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esuffix\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e-1\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a-1', ['b-1']]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esuffix\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e-1\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a-1', ['b']]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esuffix\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e-\u003c/span\u003e'\u003c/span\u003e . ( \u003cspan class=\"pl-en\"\u003eord\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e ) + \u003cspan class=\"pl-en\"\u003eord\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['a-145', 'b-147']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#prefix\"\u003eprefix()\u003c/a\u003e - Adds a prefix in front of each map entry\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003esum()\u003c/h3\u003e\u003ca id=\"user-content-sum\" class=\"anchor\" aria-label=\"Permalink: sum()\" href=\"#sum\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the sum of all integer and float values in the map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function sum( $col = null ) : float\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e sum( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecol\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003efloat\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eClosure|string|null\u003c/strong\u003e \u003ccode\u003e$col\u003c/code\u003e Closure, key in the nested array or object to sum up\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003efloat\u003c/strong\u003e Sum of all elements or 0 if there are no elements in the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eNon-numeric values will be removed before calculation.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis does also work to map values from multi-dimensional arrays by passing the keys\nof the arrays separated by the delimiter (\"/\" by default), e.g. \u003ccode\u003ekey1/key2/key3\u003c/code\u003e\nto get \u003ccode\u003eval\u003c/code\u003e from \u003ccode\u003e['key1' =\u0026gt; ['key2' =\u0026gt; ['key3' =\u0026gt; 'val']]]\u003c/code\u003e. The same applies to\npublic properties of objects or objects implementing \u003ccode\u003e__isset()\u003c/code\u003e and \u003ccode\u003e__get()\u003c/code\u003e methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [1, 3, 5] )-\u0026gt;sum();\n// 9\n\nMap::from( [1, 'sum', 5] )-\u0026gt;sum();\n// 6\n\nMap::from( [['p' =\u0026gt; 30], ['p' =\u0026gt; 50], ['p' =\u0026gt; 10]] )-\u0026gt;sum( 'p' );\n// 90\n\nMap::from( [['i' =\u0026gt; ['p' =\u0026gt; 30]], ['i' =\u0026gt; ['p' =\u0026gt; 50]]] )-\u0026gt;sum( 'i/p' );\n// 80\n\nMap::from( [['i' =\u0026gt; ['p' =\u0026gt; 30]], ['i' =\u0026gt; ['p' =\u0026gt; 50]]] )-\u0026gt;sum( fn( $val, $key ) =\u0026gt; $val['i']['p'] ?? null )\n// 80\n\nMap::from( [30, 50, 10] )-\u0026gt;sum( fn( $val, $key ) =\u0026gt; $val \u0026lt; 50 );\n// 40\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esum\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 9\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003esum\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esum\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 6\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esum\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 90\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e]], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esum\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei/p\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 80\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e]], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esum\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e][\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e] ?? \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e )\n\u003cspan class=\"pl-c\"\u003e// 80\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003esum\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eval\u003c/span\u003e \u0026lt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// 40\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#avg\"\u003eavg()\u003c/a\u003e - Returns the average of all integer and float values in the map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#count\"\u003ecount()\u003c/a\u003e - Returns the total number of elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#max\"\u003emax()\u003c/a\u003e - Returns the maximum value of all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#min\"\u003emin()\u003c/a\u003e - Returns the minium value of all elements\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#percentage\"\u003epercentage()\u003c/a\u003e - Returns the percentage of all elements passing the test\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003etake()\u003c/h3\u003e\u003ca id=\"user-content-take\" class=\"anchor\" aria-label=\"Permalink: take()\" href=\"#take\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns a new map with the given number of items.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function take( int $size, $offset = 0 ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e take( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003esize\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoffset\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$size\u003c/code\u003e Number of items to return\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|int\u003c/strong\u003e \u003ccode\u003e$offset\u003c/code\u003e Number of items to skip or function($item, $key) returning true for skipped items\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys of the items returned in the new map are the same as in the original one.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [1, 2, 3, 4] )-\u0026gt;take( 2 );\n// [0 =\u0026gt; 1, 1 =\u0026gt; 2]\n\nMap::from( [1, 2, 3, 4] )-\u0026gt;take( 2, 1 );\n// [1 =\u0026gt; 2, 2 =\u0026gt; 3]\n\nMap::from( [1, 2, 3, 4] )-\u0026gt;take( 2, -2 );\n// [2 =\u0026gt; 3, 3 =\u0026gt; 4]\n\nMap::from( [1, 2, 3, 4] )-\u0026gt;take( 2, function( $item, $key ) {\n return $item \u0026lt; 2;\n} );\n// [1 =\u0026gt; 2, 2 =\u0026gt; 3]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etake\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 1, 1 =\u0026gt; 2]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etake\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [1 =\u0026gt; 2, 2 =\u0026gt; 3]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etake\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, -\u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [2 =\u0026gt; 3, 3 =\u0026gt; 4]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etake\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e \u0026lt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// [1 =\u0026gt; 2, 2 =\u0026gt; 3]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#slice\"\u003eslice()\u003c/a\u003e - Returns a map with the slice from the original map.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003etap()\u003c/h3\u003e\u003ca id=\"user-content-tap\" class=\"anchor\" aria-label=\"Permalink: tap()\" href=\"#tap\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003ePasses a clone of the map to the given callback.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function tap( callable $callback ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e tap( \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function receiving ($map) parameter\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Same map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eUse it to \"tap\" into a chain of methods to check the state between two\nmethod calls. The original map is not altered by anything done in the\ncallback.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [3, 2, 1] )-\u0026gt;rsort()-\u0026gt;tap( function( $map ) {\n print_r( $map-\u0026gt;remove( 0 )-\u0026gt;toArray() );\n} )-\u0026gt;first();\n// 1\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ersort\u003c/span\u003e()-\u0026gt;\u003cspan class=\"pl-en\"\u003etap\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e ) {\n \u003cspan class=\"pl-en\"\u003eprint_r\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003eremove\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003etoArray\u003c/span\u003e() );\n} )-\u0026gt;\u003cspan class=\"pl-en\"\u003efirst\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// 1\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIt will sort the list in reverse order(\u003ccode\u003e[1, 2, 3]\u003c/code\u003e), then prints the items (\u003ccode\u003e[2, 3]\u003c/code\u003e)\nwithout the first one in the function passed to \u003ccode\u003etap()\u003c/code\u003e and returns the first item\n(\"1\") at the end.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003etimes()\u003c/h3\u003e\u003ca id=\"user-content-times\" class=\"anchor\" aria-label=\"Permalink: times()\" href=\"#times\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCreates a new map by invoking the closure the given number of times.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public static function times( int $num, \\Closure $callback ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003estatic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e times( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003enum\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$num\u003c/code\u003e Number of times the function is called\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (value, key) parameters and returns new value\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with the generated elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis method creates a lazy Map and the entries are generated after calling\nanother method that operates on the Map contents. Thus, the passed callback\nis not called immediately!\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::times( 3, function( $num ) {\n return $num * 10;\n} );\n// [0 =\u0026gt; 0, 1 =\u0026gt; 10, 2 =\u0026gt; 20]\n\nMap::times( 3, function( $num, \u0026amp;$key ) {\n $key = $num * 2;\n return $num * 5;\n} );\n// [0 =\u0026gt; 0, 2 =\u0026gt; 5, 4 =\u0026gt; 10]\n\nMap::times( 2, function( $num ) {\n return new \\stdClass();\n} );\n// [0 =\u0026gt; new \\stdClass(), 1 =\u0026gt; new \\stdClass()]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003etimes\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003enum\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003enum\u003c/span\u003e * \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 0, 1 =\u0026gt; 10, 2 =\u0026gt; 20]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003etimes\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003enum\u003c/span\u003e, \u0026amp;\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e = \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003enum\u003c/span\u003e * \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e;\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003enum\u003c/span\u003e * \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 0, 2 =\u0026gt; 5, 4 =\u0026gt; 10]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003etimes\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003enum\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \\\u003cspan class=\"pl-v\"\u003estdClass\u003c/span\u003e();\n} );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; new \\stdClass(), 1 =\u0026gt; new \\stdClass()]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eto()\u003c/h3\u003e\u003ca id=\"user-content-to\" class=\"anchor\" aria-label=\"Permalink: to()\" href=\"#to\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the elements as a plain array.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function to() : array\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e to() : \u003cspan class=\"pl-smi\"\u003earray\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003earray\u003c/strong\u003e Plain array\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a'] )-\u0026gt;to();\n// ['a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eto\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThis is the preferred method for retrieving the plain array of the Map object.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#all\"\u003eall()\u003c/a\u003e - Returns the elements as a plain array\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#toarray\"\u003etoArray()\u003c/a\u003e - Returns the elements as a plain array\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003etoArray()\u003c/h3\u003e\u003ca id=\"user-content-toarray\" class=\"anchor\" aria-label=\"Permalink: toArray()\" href=\"#toarray\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the elements as a plain array.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function toArray() : array\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e toArray() : \u003cspan class=\"pl-smi\"\u003earray\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003earray\u003c/strong\u003e Plain array\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a'] )-\u0026gt;toArray();\n// ['a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etoArray\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#all\"\u003eall()\u003c/a\u003e - Returns the elements as a plain array\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#to\"\u003eto()\u003c/a\u003e - Returns the elements as a plain array\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003etoJson()\u003c/h3\u003e\u003ca id=\"user-content-tojson\" class=\"anchor\" aria-label=\"Permalink: toJson()\" href=\"#tojson\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns the elements encoded as JSON string.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function toJson( int $options = 0 ) : ?string\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e toJson( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e ) : ?\u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Combination of JSON_* constants\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003estring|null\u003c/strong\u003e Array encoded as JSON string or NULL on failure\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThere are several options available to modify the JSON string which are described in\nthe \u003ca href=\"https://www.php.net/manual/en/function.json-encode.php\" rel=\"nofollow\"\u003ePHP json_encode() manual\u003c/a\u003e.\nThe parameter can be a single JSON_* constant or a bitmask of several constants\ncombine by bitwise OR (|), e.g.:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"JSON_FORCE_OBJECT|JSON_HEX_QUOT\"\u003e\u003cpre\u003e\u003cspan class=\"pl-c1\"\u003eJSON_FORCE_OBJECT\u003c/span\u003e|\u003cspan class=\"pl-c1\"\u003eJSON_HEX_QUOT\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;toJson();\n// '[\u0026quot;a\u0026quot;,\u0026quot;b\u0026quot;]'\n\nMap::from( ['a' =\u0026gt; 'b'] )-\u0026gt;toJson();\n// '{\u0026quot;a\u0026quot;:\u0026quot;b\u0026quot;}'\n\nMap::from( ['a', 'b'] )-\u0026gt;toJson( JSON_FORCE_OBJECT );\n// '{\u0026quot;0\u0026quot;:\u0026quot;a\u0026quot;, \u0026quot;1\u0026quot;:\u0026quot;b\u0026quot;}'\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etoJson\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// '[\"a\",\"b\"]'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etoJson\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// '{\"a\":\"b\"}'\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etoJson\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003eJSON_FORCE_OBJECT\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// '{\"0\":\"a\", \"1\":\"b\"}'\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003etoReversed()\u003c/h3\u003e\u003ca id=\"user-content-toreversed\" class=\"anchor\" aria-label=\"Permalink: toReversed()\" href=\"#toreversed\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReverses the element order in a copy of the map (alias).\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function toReversed() : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e toReversed() : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with a reversed copy of the elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis method is an alias for \u003ca href=\"#reversed\"\u003ereversed()\u003c/a\u003e. For performance reasons, reversed() should be\npreferred because it uses one method call less than toReversed().\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#reversed\"\u003ereversed()\u003c/a\u003e - Underlying method with same parameters and return value but better performance\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003etoSorted()\u003c/h3\u003e\u003ca id=\"user-content-tosorted\" class=\"anchor\" aria-label=\"Permalink: toSorted()\" href=\"#tosorted\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts the elements in a copy of the map using new keys (alias).\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function toSorted( int $options = SORT_REGULAR ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e toSorted( \u003cspan class=\"pl-smi\"\u003eint\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eoptions\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003eSORT_REGULAR\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint\u003c/strong\u003e \u003ccode\u003e$options\u003c/code\u003e Sort options for PHP \u003ccode\u003esort()\u003c/code\u003e\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with a sorted copy of the elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis method is an alias for \u003ca href=\"#sorted\"\u003esorted()\u003c/a\u003e. For performance reasons, sorted()\nshould be preferred because it uses one method call less than toSorted(). A new map\nis created by calling this method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#sorted\"\u003esorted()\u003c/a\u003e - Underlying method with same parameters and return value but better performance\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003etoUrl()\u003c/h3\u003e\u003ca id=\"user-content-tourl\" class=\"anchor\" aria-label=\"Permalink: toUrl()\" href=\"#tourl\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCreates a HTTP query string from the map elements.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function toUrl() : string\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e toUrl() : \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003estring\u003c/strong\u003e Parameter string for GET requests\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 2] )-\u0026gt;toUrl();\n// a=1\u0026amp;b=2\n\nMap::from( ['a' =\u0026gt; ['b' =\u0026gt; 'abc', 'c' =\u0026gt; 'def'], 'd' =\u0026gt; 123] )-\u0026gt;toUrl();\n// a%5Bb%5D=abc\u0026amp;a%5Bc%5D=def\u0026amp;d=123\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etoUrl\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// a=1\u0026amp;b=2\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003edef\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e123\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etoUrl\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// a%5Bb%5D=abc\u0026amp;a%5Bc%5D=def\u0026amp;d=123\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003etransform()\u003c/h3\u003e\u003ca id=\"user-content-transform\" class=\"anchor\" aria-label=\"Permalink: transform()\" href=\"#transform\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCreates new key/value pairs using the passed function and returns a new map for the result.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function transform( \\Closure $callback ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e transform( \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (value, key) parameters and returns an array of new key/value pair(s)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with the new key/value pairs\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eIf a key is returned twice, the last value will overwrite previous values.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 2, 'b' =\u0026gt; 4] )-\u0026gt;transform( function( $value, $key ) {\n return [$key . '-2' =\u0026gt; $value * 2];\n} );\n// ['a-2' =\u0026gt; 4, 'b-2' =\u0026gt; 8]\n\nMap::from( ['a' =\u0026gt; 2, 'b' =\u0026gt; 4] )-\u0026gt;transform( function( $value, $key ) {\n return [$key =\u0026gt; $value * 2, $key . $key =\u0026gt; $value * 4];\n} );\n// ['a' =\u0026gt; 4, 'aa' =\u0026gt; 8, 'b' =\u0026gt; 8, 'bb' =\u0026gt; 16]\n\nMap::from( ['a' =\u0026gt; 2, 'b' =\u0026gt; 4] )-\u0026gt;transform( function( $value, $key ) {\n return $key \u0026lt; 'b' ? [$key =\u0026gt; $value * 2] : null;\n} );\n// ['a' =\u0026gt; 4]\n\nMap::from( ['la' =\u0026gt; 2, 'le' =\u0026gt; 4, 'li' =\u0026gt; 6] )-\u0026gt;transform( function( $value, $key ) {\n return [$key[0] =\u0026gt; $value * 2];\n} );\n// ['l' =\u0026gt; 12]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etransform\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e [\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e . \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e-2\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e * \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e];\n} );\n\u003cspan class=\"pl-c\"\u003e// ['a-2' =\u0026gt; 4, 'b-2' =\u0026gt; 8]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etransform\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e [\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e * \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e . \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e * \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e];\n} );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 4, 'aa' =\u0026gt; 8, 'b' =\u0026gt; 8, 'bb' =\u0026gt; 16]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etransform\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e \u0026lt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e ? [\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e * \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e] : \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 4]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ela\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ele\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eli\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e6\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etransform\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e [\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e[\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e] =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e * \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e];\n} );\n\u003cspan class=\"pl-c\"\u003e// ['l' =\u0026gt; 12]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#map\"\u003emap()\u003c/a\u003e - Maps new values to the existing keys using the passed function and returns a new map for the result\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#rekey\"\u003erekey()\u003c/a\u003e - Changes the keys according to the passed function\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003etranspose()\u003c/h3\u003e\u003ca id=\"user-content-transpose\" class=\"anchor\" aria-label=\"Permalink: transpose()\" href=\"#transpose\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eExchanges rows and columns for a two dimensional map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function transpose() : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e transpose() : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [\n ['name' =\u0026gt; 'A', 2020 =\u0026gt; 200, 2021 =\u0026gt; 100, 2022 =\u0026gt; 50],\n ['name' =\u0026gt; 'B', 2020 =\u0026gt; 300, 2021 =\u0026gt; 200, 2022 =\u0026gt; 100],\n ['name' =\u0026gt; 'C', 2020 =\u0026gt; 400, 2021 =\u0026gt; 300, 2022 =\u0026gt; 200],\n] )-\u0026gt;transpose();\n/*\n[\n 'name' =\u0026gt; ['A', 'B', 'C'],\n 2020 =\u0026gt; [200, 300, 400],\n 2021 =\u0026gt; [100, 200, 300],\n 2022 =\u0026gt; [50, 100, 200]\n]\n*/\n\nMap::from( [\n ['name' =\u0026gt; 'A', 2020 =\u0026gt; 200, 2021 =\u0026gt; 100, 2022 =\u0026gt; 50],\n ['name' =\u0026gt; 'B', 2020 =\u0026gt; 300, 2021 =\u0026gt; 200],\n ['name' =\u0026gt; 'C', 2020 =\u0026gt; 400]\n] );\n/*\n[\n 'name' =\u0026gt; ['A', 'B', 'C'],\n 2020 =\u0026gt; [200, 300, 400],\n 2021 =\u0026gt; [100, 200],\n 2022 =\u0026gt; [50]\n]\n*/\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2020\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e200\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2021\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e100\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2022\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2020\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e300\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2021\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e200\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2022\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e100\u003c/span\u003e],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2020\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e400\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2021\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e300\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2022\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e200\u003c/span\u003e],\n] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etranspose\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 'name' =\u0026gt; ['A', 'B', 'C'],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 2020 =\u0026gt; [200, 300, 400],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 2021 =\u0026gt; [100, 200, 300],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 2022 =\u0026gt; [50, 100, 200]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eA\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2020\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e200\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2021\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e100\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2022\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2020\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e300\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2021\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e200\u003c/span\u003e],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eC\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2020\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e400\u003c/span\u003e]\n] );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 'name' =\u0026gt; ['A', 'B', 'C'],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 2020 =\u0026gt; [200, 300, 400],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 2021 =\u0026gt; [100, 200],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 2022 =\u0026gt; [50]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003etraverse()\u003c/h3\u003e\u003ca id=\"user-content-traverse\" class=\"anchor\" aria-label=\"Permalink: traverse()\" href=\"#traverse\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTraverses trees of nested items passing each item to the callback.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function traverse( \\Closure $callback = null, string $nestKey = 'children' ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e traverse( \u003cspan class=\"pl-smi\"\u003e\\\u003cspan class=\"pl-smi\"\u003eClosure\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003enestKey\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003echildren\u003c/span\u003e'\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|null\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Callback with (entry, key, level, $parent) arguments, returns the entry added to result\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$nestKey\u003c/code\u003e Key to the children of each item\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with all items as flat list\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThis does work for nested arrays and objects with public properties or\nobjects implementing \u003ccode\u003e__isset()\u003c/code\u003e and \u003ccode\u003e__get()\u003c/code\u003e methods. To build trees\nof nested items, use the \u003ca href=\"#tree\"\u003etree()\u003c/a\u003e method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [[\n 'id' =\u0026gt; 1, 'pid' =\u0026gt; null, 'name' =\u0026gt; 'n1', 'children' =\u0026gt; [\n ['id' =\u0026gt; 2, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n2', 'children' =\u0026gt; []],\n ['id' =\u0026gt; 3, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n3', 'children' =\u0026gt; []]\n ]\n]] )-\u0026gt;traverse();\n/*\n[\n ['id' =\u0026gt; 1, 'pid' =\u0026gt; null, 'name' =\u0026gt; 'n1', 'children' =\u0026gt; [...]],\n ['id' =\u0026gt; 2, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n2', 'children' =\u0026gt; []],\n ['id' =\u0026gt; 3, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n3', 'children' =\u0026gt; []],\n]\n*/\n\nMap::from( [[\n 'id' =\u0026gt; 1, 'pid' =\u0026gt; null, 'name' =\u0026gt; 'n1', 'children' =\u0026gt; [\n ['id' =\u0026gt; 2, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n2', 'children' =\u0026gt; []],\n ['id' =\u0026gt; 3, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n3', 'children' =\u0026gt; []]\n ]\n]] )-\u0026gt;traverse( function( $entry, $key, $level ) {\n return str_repeat( '-', $level ) . '- ' . $entry['name'];\n} );\n// ['- n1', '-- n2', '-- n3']\n\nMap::from( [[\n 'id' =\u0026gt; 1, 'pid' =\u0026gt; null, 'name' =\u0026gt; 'n1', 'children' =\u0026gt; [\n ['id' =\u0026gt; 2, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n2', 'children' =\u0026gt; []],\n ['id' =\u0026gt; 3, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n3', 'children' =\u0026gt; []]\n ]\n]] )-\u0026gt;traverse( function( \u0026amp;$entry, $key, $level, $parent ) {\n $entry['path'] = isset( $parent['path'] ) ? $parent['path'] . '/' . $entry['name'] : $entry['name'];\n return $entry;\n} );\n/*\n[\n ['id' =\u0026gt; 1, 'pid' =\u0026gt; null, 'name' =\u0026gt; 'n1', 'children' =\u0026gt; [...], 'path' =\u0026gt; 'n1'],\n ['id' =\u0026gt; 2, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n2', 'children' =\u0026gt; [], 'path' =\u0026gt; 'n1/n2'],\n ['id' =\u0026gt; 3, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n3', 'children' =\u0026gt; [], 'path' =\u0026gt; 'n1/n3'],\n]\n*/\n\nMap::from( [[\n 'id' =\u0026gt; 1, 'pid' =\u0026gt; null, 'name' =\u0026gt; 'n1', 'nodes' =\u0026gt; [\n ['id' =\u0026gt; 2, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n2', 'nodes' =\u0026gt; []]\n ]\n]] )-\u0026gt;traverse( null, 'nodes' );\n/*\n[\n ['id' =\u0026gt; 1, 'pid' =\u0026gt; null, 'name' =\u0026gt; 'n1', 'nodes' =\u0026gt; [...]],\n ['id' =\u0026gt; 2, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n2', 'nodes' =\u0026gt; []],\n]\n*/\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\n \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en1\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003echildren\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en2\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003echildren\u003c/span\u003e'\u003c/span\u003e =\u0026gt; []],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en3\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003echildren\u003c/span\u003e'\u003c/span\u003e =\u0026gt; []]\n ]\n]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etraverse\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ['id' =\u0026gt; 1, 'pid' =\u0026gt; null, 'name' =\u0026gt; 'n1', 'children' =\u0026gt; [...]],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ['id' =\u0026gt; 2, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n2', 'children' =\u0026gt; []],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ['id' =\u0026gt; 3, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n3', 'children' =\u0026gt; []],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\n \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en1\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003echildren\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en2\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003echildren\u003c/span\u003e'\u003c/span\u003e =\u0026gt; []],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en3\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003echildren\u003c/span\u003e'\u003c/span\u003e =\u0026gt; []]\n ]\n]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etraverse\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eentry\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elevel\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estr_repeat\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e-\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elevel\u003c/span\u003e ) . \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e- \u003c/span\u003e'\u003c/span\u003e . \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eentry\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e];\n} );\n\u003cspan class=\"pl-c\"\u003e// ['- n1', '-- n2', '-- n3']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\n \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en1\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003echildren\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en2\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003echildren\u003c/span\u003e'\u003c/span\u003e =\u0026gt; []],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en3\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003echildren\u003c/span\u003e'\u003c/span\u003e =\u0026gt; []]\n ]\n]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etraverse\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u0026amp;\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eentry\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elevel\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eparent\u003c/span\u003e ) {\n \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eentry\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epath\u003c/span\u003e'\u003c/span\u003e] = \u003cspan class=\"pl-en\"\u003eisset\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eparent\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epath\u003c/span\u003e'\u003c/span\u003e] ) ? \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eparent\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epath\u003c/span\u003e'\u003c/span\u003e] . \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e/\u003c/span\u003e'\u003c/span\u003e . \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eentry\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e] : \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eentry\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e];\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eentry\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ['id' =\u0026gt; 1, 'pid' =\u0026gt; null, 'name' =\u0026gt; 'n1', 'children' =\u0026gt; [...], 'path' =\u0026gt; 'n1'],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ['id' =\u0026gt; 2, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n2', 'children' =\u0026gt; [], 'path' =\u0026gt; 'n1/n2'],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ['id' =\u0026gt; 3, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n3', 'children' =\u0026gt; [], 'path' =\u0026gt; 'n1/n3'],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\n \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en1\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003enodes\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en2\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003enodes\u003c/span\u003e'\u003c/span\u003e =\u0026gt; []]\n ]\n]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etraverse\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003enodes\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ['id' =\u0026gt; 1, 'pid' =\u0026gt; null, 'name' =\u0026gt; 'n1', 'nodes' =\u0026gt; [...]],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ['id' =\u0026gt; 2, 'pid' =\u0026gt; 1, 'name' =\u0026gt; 'n2', 'nodes' =\u0026gt; []],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#tree\"\u003etree()\u003c/a\u003e - Creates a tree structure from the list items\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003etree()\u003c/h3\u003e\u003ca id=\"user-content-tree\" class=\"anchor\" aria-label=\"Permalink: tree()\" href=\"#tree\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCreates a tree structure from the list items.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function tree( string $idKey, string $parentKey, string $nestKey = 'children' ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e tree( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eidKey\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eparentKey\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003enestKey\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003echildren\u003c/span\u003e'\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$idKey\u003c/code\u003e Name of the key with the unique ID of the node\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$parentKey\u003c/code\u003e Name of the key with the ID of the parent node\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$nestKey\u003c/code\u003e Name of the key with will contain the children of the node\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map with one or more root tree nodes\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eUse this method to rebuild trees e.g. from database records. To traverse\ntrees, use the \u003ca href=\"#traverse\"\u003etraverse()\u003c/a\u003e method.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [\n ['id' =\u0026gt; 1, 'pid' =\u0026gt; null, 'lvl' =\u0026gt; 0, 'name' =\u0026gt; 'n1'],\n ['id' =\u0026gt; 2, 'pid' =\u0026gt; 1, 'lvl' =\u0026gt; 1, 'name' =\u0026gt; 'n2'],\n ['id' =\u0026gt; 3, 'pid' =\u0026gt; 2, 'lvl' =\u0026gt; 2, 'name' =\u0026gt; 'n3'],\n ['id' =\u0026gt; 4, 'pid' =\u0026gt; 1, 'lvl' =\u0026gt; 1, 'name' =\u0026gt; 'n4'],\n ['id' =\u0026gt; 5, 'pid' =\u0026gt; 3, 'lvl' =\u0026gt; 2, 'name' =\u0026gt; 'n5'],\n ['id' =\u0026gt; 6, 'pid' =\u0026gt; 1, 'lvl' =\u0026gt; 1, 'name' =\u0026gt; 'n6'],\n] )-\u0026gt;tree( 'id', 'pid' );\n/*\n[1 =\u0026gt; [\n 'id' =\u0026gt; 1, 'pid' =\u0026gt; null, 'lvl' =\u0026gt; 0, 'name' =\u0026gt; 'n1', 'children' =\u0026gt; [\n 2 =\u0026gt; ['id' =\u0026gt; 2, 'pid' =\u0026gt; 1, 'lvl' =\u0026gt; 1, 'name' =\u0026gt; 'n2', 'children' =\u0026gt; [\n 3 =\u0026gt; ['id' =\u0026gt; 3, 'pid' =\u0026gt; 2, 'lvl' =\u0026gt; 2, 'name' =\u0026gt; 'n3', 'children' =\u0026gt; []]\n ]],\n 4 =\u0026gt; ['id' =\u0026gt; 4, 'pid' =\u0026gt; 1, 'lvl' =\u0026gt; 1, 'name' =\u0026gt; 'n4', 'children' =\u0026gt; [\n 5 =\u0026gt; ['id' =\u0026gt; 5, 'pid' =\u0026gt; 3, 'lvl' =\u0026gt; 2, 'name' =\u0026gt; 'n5', 'children' =\u0026gt; []]\n ]],\n 6 =\u0026gt; ['id' =\u0026gt; 6, 'pid' =\u0026gt; 1, 'lvl' =\u0026gt; 1, 'name' =\u0026gt; 'n6', 'children' =\u0026gt; []]\n ]\n]]\n*/\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003elvl\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en1\u003c/span\u003e'\u003c/span\u003e],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003elvl\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en2\u003c/span\u003e'\u003c/span\u003e],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003elvl\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en3\u003c/span\u003e'\u003c/span\u003e],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003elvl\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en4\u003c/span\u003e'\u003c/span\u003e],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e5\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003elvl\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en5\u003c/span\u003e'\u003c/span\u003e],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e6\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003elvl\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003en6\u003c/span\u003e'\u003c/span\u003e],\n] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etree\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003epid\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[1 =\u0026gt; [\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 'id' =\u0026gt; 1, 'pid' =\u0026gt; null, 'lvl' =\u0026gt; 0, 'name' =\u0026gt; 'n1', 'children' =\u0026gt; [\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 2 =\u0026gt; ['id' =\u0026gt; 2, 'pid' =\u0026gt; 1, 'lvl' =\u0026gt; 1, 'name' =\u0026gt; 'n2', 'children' =\u0026gt; [\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 3 =\u0026gt; ['id' =\u0026gt; 3, 'pid' =\u0026gt; 2, 'lvl' =\u0026gt; 2, 'name' =\u0026gt; 'n3', 'children' =\u0026gt; []]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ]],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 4 =\u0026gt; ['id' =\u0026gt; 4, 'pid' =\u0026gt; 1, 'lvl' =\u0026gt; 1, 'name' =\u0026gt; 'n4', 'children' =\u0026gt; [\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 5 =\u0026gt; ['id' =\u0026gt; 5, 'pid' =\u0026gt; 3, 'lvl' =\u0026gt; 2, 'name' =\u0026gt; 'n5', 'children' =\u0026gt; []]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ]],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e 6 =\u0026gt; ['id' =\u0026gt; 6, 'pid' =\u0026gt; 1, 'lvl' =\u0026gt; 1, 'name' =\u0026gt; 'n6', 'children' =\u0026gt; []]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTo build the tree correctly, the items must be in order or at least the\nnodes of the lower levels must come first. For a tree like this:\u003c/p\u003e\n\u003cdiv class=\"snippet-clipboard-content notranslate position-relative overflow-auto\" data-snippet-clipboard-copy-content=\"n1\n|- n2\n| |- n3\n|- n4\n| |- n5\n|- n6\"\u003e\u003cpre class=\"notranslate\"\u003e\u003ccode\u003en1\n|- n2\n| |- n3\n|- n4\n| |- n5\n|- n6\n\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eAccepted item order:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003ein order: n1, n2, n3, n4, n5, n6\u003c/li\u003e\n\u003cli\u003elower levels first: n1, n2, n4, n6, n3, n5\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eIf your items are unordered, apply \u003ca href=\"#usort\"\u003eusort()\u003c/a\u003e first to the map entries, e.g.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [['id' =\u0026gt; 3, 'lvl' =\u0026gt; 2], ...] )-\u0026gt;usort( function( $item1, $item2 ) {\n return $item1['lvl'] \u0026lt;=\u0026gt; $item2['lvl'];\n} );\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003elvl\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e], ...] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eusort\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem1\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem2\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem1\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003elvl\u003c/span\u003e'\u003c/span\u003e] \u0026lt;=\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem2\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003elvl\u003c/span\u003e'\u003c/span\u003e];\n} );\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#traverse\"\u003etraverse()\u003c/a\u003e - Traverses trees of nested items passing each item to the callback\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003etrim()\u003c/h3\u003e\u003ca id=\"user-content-trim\" class=\"anchor\" aria-label=\"Permalink: trim()\" href=\"#trim\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eRemoves the passed characters from the left/right of all strings.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function trim( string $chars = \u0026quot; \\n\\r\\t\\v\\x00\u0026quot; ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e trim( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003echars\u003c/span\u003e = \u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003e \u003c/span\u003e\\n\\r\\t\\v\\x00\"\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$chars\u003c/code\u003e List of characters to trim\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [\u0026quot; abc\\n\u0026quot;, \u0026quot;\\tcde\\r\\n\u0026quot;] )-\u0026gt;trim();\n// [\u0026quot;abc\u0026quot;, \u0026quot;cde\u0026quot;]\n\nMap::from( [\u0026quot;a b c\u0026quot;, \u0026quot;cbax\u0026quot;] )-\u0026gt;trim( 'abc' );\n// [\u0026quot; b \u0026quot;, \u0026quot;x\u0026quot;]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003e abc\u003c/span\u003e\\n\"\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\"\\t\u003cspan class=\"pl-s\"\u003ecde\u003c/span\u003e\\r\\n\"\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etrim\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [\"abc\", \"cde\"]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003ea b c\u003c/span\u003e\"\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e\"\u003cspan class=\"pl-s\"\u003ecbax\u003c/span\u003e\"\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003etrim\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eabc\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [\" b \", \"x\"]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#ltrim\"\u003eltrim()\u003c/a\u003e - Removes the passed characters from the left of all strings\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#rtrim\"\u003ertrim()\u003c/a\u003e - Removes the passed characters from the right of all strings\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003euasort()\u003c/h3\u003e\u003ca id=\"user-content-uasort\" class=\"anchor\" aria-label=\"Permalink: uasort()\" href=\"#uasort\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts all elements using a callback and maintains the key association.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function uasort( callable $callback ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e uasort( \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (itemA, itemB) parameters and returns -1 (\u0026lt;), 0 (=) and 1 (\u0026gt;)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe given callback will be used to compare the values. The callback must accept\ntwo parameters (item A and B) and must return -1 if item A is smaller than\nitem B, 0 if both are equal and 1 if item A is greater than item B. Both, a\nmethod name and an anonymous function can be passed.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method and no new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'B', 'b' =\u0026gt; 'a'] )-\u0026gt;uasort( 'strcasecmp' );\n// ['b' =\u0026gt; 'a', 'a' =\u0026gt; 'B']\n\nMap::from( ['a' =\u0026gt; 'B', 'b' =\u0026gt; 'a'] )-\u0026gt;uasort( function( $itemA, $itemB ) {\n return strtolower( $itemA ) \u0026lt;=\u0026gt; strtolower( $itemB );\n} );\n// ['b' =\u0026gt; 'a', 'a' =\u0026gt; 'B']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003euasort\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['b' =\u0026gt; 'a', 'a' =\u0026gt; 'B']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003euasort\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemA\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemB\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemA\u003c/span\u003e ) \u0026lt;=\u0026gt; \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemB\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['b' =\u0026gt; 'a', 'a' =\u0026gt; 'B']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#uasorted\"\u003euasorted()\u003c/a\u003e - Sorts a copy of all elements using a callback and maintains the key association\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003euasorted()\u003c/h3\u003e\u003ca id=\"user-content-uasorted\" class=\"anchor\" aria-label=\"Permalink: uasorted()\" href=\"#uasorted\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts a copy of all elements using a callback and maintains the key association.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function uasorted( callable $callback ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e uasorted( \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (itemA, itemB) parameters and returns -1 (\u0026lt;), 0 (=) and 1 (\u0026gt;)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe given callback will be used to compare the values. The callback must accept\ntwo parameters (item A and B) and must return -1 if item A is smaller than\nitem B, 0 if both are equal and 1 if item A is greater than item B. Both, a\nmethod name and an anonymous function can be passed.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method and a new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'B', 'b' =\u0026gt; 'a'] )-\u0026gt;uasorted( 'strcasecmp' );\n// ['b' =\u0026gt; 'a', 'a' =\u0026gt; 'B']\n\nMap::from( ['a' =\u0026gt; 'B', 'b' =\u0026gt; 'a'] )-\u0026gt;uasorted( function( $itemA, $itemB ) {\n return strtolower( $itemA ) \u0026lt;=\u0026gt; strtolower( $itemB );\n} );\n// ['b' =\u0026gt; 'a', 'a' =\u0026gt; 'B']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003euasorted\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['b' =\u0026gt; 'a', 'a' =\u0026gt; 'B']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003euasorted\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemA\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemB\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemA\u003c/span\u003e ) \u0026lt;=\u0026gt; \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemB\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['b' =\u0026gt; 'a', 'a' =\u0026gt; 'B']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#uasort\"\u003euasort()\u003c/a\u003e - Sorts all elements using a callback and maintains the key association\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003euksort()\u003c/h3\u003e\u003ca id=\"user-content-uksort\" class=\"anchor\" aria-label=\"Permalink: uksort()\" href=\"#uksort\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts the map elements by their keys using a callback.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function uksort( callable $callback ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e uksort( \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (keyA, keyB) parameters and returns -1 (\u0026lt;), 0 (=) and 1 (\u0026gt;)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe given callback will be used to compare the keys. The callback must accept\ntwo parameters (key A and B) and must return -1 if key A is smaller than\nkey B, 0 if both are equal and 1 if key A is greater than key B. Both, a\nmethod name and an anonymous function can be passed.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method and no new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['B' =\u0026gt; 'a', 'a' =\u0026gt; 'b'] )-\u0026gt;uksort( 'strcasecmp' );\n// ['a' =\u0026gt; 'b', 'B' =\u0026gt; 'a']\n\nMap::from( ['B' =\u0026gt; 'a', 'a' =\u0026gt; 'b'] )-\u0026gt;uksort( function( $keyA, $keyB ) {\n return strtolower( $keyA ) \u0026lt;=\u0026gt; strtolower( $keyB );\n} );\n// ['a' =\u0026gt; 'b', 'B' =\u0026gt; 'a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003euksort\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 'b', 'B' =\u0026gt; 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003euksort\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyA\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyB\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyA\u003c/span\u003e ) \u0026lt;=\u0026gt; \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyB\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 'b', 'B' =\u0026gt; 'a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#uksorted\"\u003euksorted()\u003c/a\u003e - Sorts a copy of the map elements by their keys using a callback\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003euksorted()\u003c/h3\u003e\u003ca id=\"user-content-uksorted\" class=\"anchor\" aria-label=\"Permalink: uksorted()\" href=\"#uksorted\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts a copy of the map elements by their keys using a callback.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function uksorted( callable $callback ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e uksorted( \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (keyA, keyB) parameters and returns -1 (\u0026lt;), 0 (=) and 1 (\u0026gt;)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe given callback will be used to compare the keys. The callback must accept\ntwo parameters (key A and B) and must return -1 if key A is smaller than\nkey B, 0 if both are equal and 1 if key A is greater than key B. Both, a\nmethod name and an anonymous function can be passed.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys are preserved using this method and a new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['B' =\u0026gt; 'a', 'a' =\u0026gt; 'b'] )-\u0026gt;uksorted( 'strcasecmp' );\n// ['a' =\u0026gt; 'b', 'B' =\u0026gt; 'a']\n\nMap::from( ['B' =\u0026gt; 'a', 'a' =\u0026gt; 'b'] )-\u0026gt;uksorted( function( $keyA, $keyB ) {\n return strtolower( $keyA ) \u0026lt;=\u0026gt; strtolower( $keyB );\n} );\n// ['a' =\u0026gt; 'b', 'B' =\u0026gt; 'a']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003euksorted\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 'b', 'B' =\u0026gt; 'a']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003euksorted\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyA\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyB\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyA\u003c/span\u003e ) \u0026lt;=\u0026gt; \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeyB\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 'b', 'B' =\u0026gt; 'a']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#uksort\"\u003euksort()\u003c/a\u003e - Sorts the map elements by their keys using a callback\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eunion()\u003c/h3\u003e\u003ca id=\"user-content-union\" class=\"anchor\" aria-label=\"Permalink: union()\" href=\"#union\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eBuilds a union of the elements and the given elements without returning a new map.\nExisting keys in the map will not be overwritten\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function union( iterable $elements ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e union( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eiterable\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$elements\u003c/code\u003e List of elements\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eIf list entries should be overwritten, use \u003ca href=\"#merge\"\u003emerge()\u003c/a\u003e instead.\nThe keys are preserved using this method and no new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [0 =\u0026gt; 'a', 1 =\u0026gt; 'b'] )-\u0026gt;union( [0 =\u0026gt; 'c'] );\n// [0 =\u0026gt; 'a', 1 =\u0026gt; 'b'] because the key 0 isn't overwritten\n\nMap::from( ['a' =\u0026gt; 1, 'b' =\u0026gt; 2] )-\u0026gt;union( ['c' =\u0026gt; 1] );\n// ['a' =\u0026gt; 1, 'b' =\u0026gt; 2, 'c' =\u0026gt; 1]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eunion\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'a', 1 =\u0026gt; 'b'] because the key 0 isn't overwritten\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eunion\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 'b' =\u0026gt; 2, 'c' =\u0026gt; 1]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#combine\"\u003econcat()\u003c/a\u003e - Adds all elements with new keys\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#merge\"\u003emerge()\u003c/a\u003e - Merges the map with the given elements without returning a new map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eunique()\u003c/h3\u003e\u003ca id=\"user-content-unique\" class=\"anchor\" aria-label=\"Permalink: unique()\" href=\"#unique\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns only unique elements from the map in a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function unique( $col = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e unique( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecol\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003e\\Closure|string|null\u003c/strong\u003e \u003ccode\u003e$col\u003c/code\u003e Key, path of the nested array or anonymous function with ($item, $key) parameters returning the value for comparison\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eTwo elements are considered equal if comparing their string representions returns TRUE:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"(string) $elem1 === (string) $elem2\"\u003e\u003cpre\u003e(\u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e) \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelem1\u003c/span\u003e === (\u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e) \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelem2\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe keys of the elements are preserved in the new map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [0 =\u0026gt; 'a', 1 =\u0026gt; 'b', 2 =\u0026gt; 'b', 3 =\u0026gt; 'c'] )-\u0026gt;unique();\n// [0 =\u0026gt; 'a', 1 =\u0026gt; 'b', 3 =\u0026gt; 'c']\n\nMap::from( [['p' =\u0026gt; '1'], ['p' =\u0026gt; 1], ['p' =\u0026gt; 2]] )-\u0026gt;unique( 'p' );\n// [0 =\u0026gt; ['p' =\u0026gt; '1'], 2 =\u0026gt; ['p' =\u0026gt; 2]]\n\nMap::from( [['i' =\u0026gt; ['p' =\u0026gt; '1']], ['i' =\u0026gt; ['p' =\u0026gt; 1]]] )-\u0026gt;unique( 'i/p' );\n// [0 =\u0026gt; ['i' =\u0026gt; ['p' =\u0026gt; '1']]]\n\nMap::from( [['i' =\u0026gt; ['p' =\u0026gt; '1']], ['i' =\u0026gt; ['p' =\u0026gt; 1]]] )-\u0026gt;unique( fn( $item, $key ) =\u0026gt; $item['i']['p'] );\n// [0 =\u0026gt; ['i' =\u0026gt; ['p' =\u0026gt; '1']]]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eunique\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'a', 1 =\u0026gt; 'b', 3 =\u0026gt; 'c']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1\u003c/span\u003e'\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eunique\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; ['p' =\u0026gt; '1'], 2 =\u0026gt; ['p' =\u0026gt; 2]]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1\u003c/span\u003e'\u003c/span\u003e]], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eunique\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei/p\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; ['i' =\u0026gt; ['p' =\u0026gt; '1']]]\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e1\u003c/span\u003e'\u003c/span\u003e]], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e]]] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eunique\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efn\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) =\u0026gt; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitem\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ei\u003c/span\u003e'\u003c/span\u003e][\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ep\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; ['i' =\u0026gt; ['p' =\u0026gt; '1']]]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#duplicates\"\u003eduplicates()\u003c/a\u003e - Returns the duplicate values from the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eunshift()\u003c/h3\u003e\u003ca id=\"user-content-unshift\" class=\"anchor\" aria-label=\"Permalink: unshift()\" href=\"#unshift\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003ePushes an element onto the beginning of the map without returning a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function unshift( $value, $key = null ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e unshift( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Item to add at the beginning\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string|null\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key for the item or NULL to reindex all numerical keys\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys of the elements are only preserved in the new map if no key is passed.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;unshift( 'd' );\n// ['d', 'a', 'b']\n\nMap::from( ['a', 'b'] )-\u0026gt;unshift( 'd', 'first' );\n// ['first' =\u0026gt; 'd', 0 =\u0026gt; 'a', 1 =\u0026gt; 'b']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eunshift\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['d', 'a', 'b']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eunshift\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efirst\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['first' =\u0026gt; 'd', 0 =\u0026gt; 'a', 1 =\u0026gt; 'b']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003ePerformance note:\u003c/strong\u003e\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe bigger the list, the higher the performance impact because \u003ccode\u003eunshift()\u003c/code\u003e\nneeds to create a new list and copies all existing elements to the new\narray. Usually, it's better to \u003ca href=\"#push\"\u003epush()\u003c/a\u003e new entries at the end and\n\u003ca href=\"#reverse\"\u003ereverse()\u003c/a\u003e the list afterwards:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$map-\u0026gt;push( 'a' )-\u0026gt;push( 'b' )-\u0026gt;reverse();\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003epush\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003epush\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003ereverse\u003c/span\u003e();\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003einstead of\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$map-\u0026gt;unshift( 'a' )-\u0026gt;unshift( 'b' );\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003eunshift\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003eunshift\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#shift\"\u003eshift()\u003c/a\u003e - Returns and removes the first element from the map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eusort()\u003c/h3\u003e\u003ca id=\"user-content-usort\" class=\"anchor\" aria-label=\"Permalink: usort()\" href=\"#usort\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts all elements using a callback without maintaining the key association.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function usort( callable $callback ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e usort( \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (itemA, itemB) parameters and returns -1 (\u0026lt;), 0 (=) and 1 (\u0026gt;)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe given callback will be used to compare the values. The callback must accept\ntwo parameters (item A and B) and must return -1 if item A is smaller than\nitem B, 0 if both are equal and 1 if item A is greater than item B. Both, a\nmethod name and an anonymous function can be passed.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys are NOT preserved and elements get a new index. No new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'B', 'b' =\u0026gt; 'a'] )-\u0026gt;usort( 'strcasecmp' );\n// [0 =\u0026gt; 'a', 1 =\u0026gt; 'B']\n\nMap::from( ['a' =\u0026gt; 'B', 'b' =\u0026gt; 'a'] )-\u0026gt;usort( function( $itemA, $itemB ) {\n return strtolower( $itemA ) \u0026lt;=\u0026gt; strtolower( $itemB );\n} );\n// [0 =\u0026gt; 'a', 1 =\u0026gt; 'B']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eusort\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'a', 1 =\u0026gt; 'B']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eusort\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemA\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemB\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemA\u003c/span\u003e ) \u0026lt;=\u0026gt; \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemB\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'a', 1 =\u0026gt; 'B']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#usorted\"\u003eusorted()\u003c/a\u003e - Sorts a copy of all elements using a callback without maintaining the key association\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eusorted()\u003c/h3\u003e\u003ca id=\"user-content-usorted\" class=\"anchor\" aria-label=\"Permalink: usorted()\" href=\"#usorted\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSorts a copy of all elements using a callback without maintaining the key association.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function usorted( callable $callback ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e usorted( \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (itemA, itemB) parameters and returns -1 (\u0026lt;), 0 (=) and 1 (\u0026gt;)\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe given callback will be used to compare the values. The callback must accept\ntwo parameters (item A and B) and must return -1 if item A is smaller than\nitem B, 0 if both are equal and 1 if item A is greater than item B. Both, a\nmethod name and an anonymous function can be passed.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe keys are NOT preserved and elements get a new index and a new map is created.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a' =\u0026gt; 'B', 'b' =\u0026gt; 'a'] )-\u0026gt;usorted( 'strcasecmp' );\n// [0 =\u0026gt; 'a', 1 =\u0026gt; 'B']\n\nMap::from( ['a' =\u0026gt; 'B', 'b' =\u0026gt; 'a'] )-\u0026gt;usorted( function( $itemA, $itemB ) {\n return strtolower( $itemA ) \u0026lt;=\u0026gt; strtolower( $itemB );\n} );\n// [0 =\u0026gt; 'a', 1 =\u0026gt; 'B']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eusorted\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrcasecmp\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'a', 1 =\u0026gt; 'B']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eusorted\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemA\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemB\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemA\u003c/span\u003e ) \u0026lt;=\u0026gt; \u003cspan class=\"pl-en\"\u003estrtolower\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eitemB\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'a', 1 =\u0026gt; 'B']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#usort\"\u003eusort()\u003c/a\u003e - Sorts all elements using a callback without maintaining the key association\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003evalues()\u003c/h3\u003e\u003ca id=\"user-content-values\" class=\"anchor\" aria-label=\"Permalink: values()\" href=\"#values\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eResets the keys and return the values in a new map.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function values() : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e values() : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map of the values\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['x' =\u0026gt; 'b', 2 =\u0026gt; 'a', 'c'] )-\u0026gt;values();\n// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a', 2 =\u0026gt; 'c']\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003evalues\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// [0 =\u0026gt; 'b', 1 =\u0026gt; 'a', 2 =\u0026gt; 'c']\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ewalk()\u003c/h3\u003e\u003ca id=\"user-content-walk\" class=\"anchor\" aria-label=\"Permalink: walk()\" href=\"#walk\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eApplies the given callback to all elements.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function walk( callable $callback, $data = null, bool $recursive = true ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e walk( \u003cspan class=\"pl-smi\"\u003ecallable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ecallback\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edata\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003ebool\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003erecursive\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003ecallable\u003c/strong\u003e \u003ccode\u003e$callback\u003c/code\u003e Function with (item, key, data) parameters\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$data\u003c/code\u003e Arbitrary data that will be passed to the callback as third parameter\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003ebool\u003c/strong\u003e \u003ccode\u003e$recursive\u003c/code\u003e TRUE to traverse sub-arrays recursively (default), FALSE to iterate Map elements only\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e Updated map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eTo change the values of the Map, specify the value parameter as reference\n(\u003ccode\u003e\u0026amp;$value\u003c/code\u003e). You can only change the values but not the keys nor the array\nstructure.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eBy default, Map elements which are arrays will be traversed recursively.\nTo iterate over the Map elements only, pass FALSE as third parameter.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'B', ['c', 'd'], 'e'] )-\u0026gt;walk( function( \u0026amp;$value ) {\n $value = strtoupper( $value );\n} );\n// ['A', 'B', ['C', 'D'], 'E']\n\nMap::from( [66 =\u0026gt; 'B', 97 =\u0026gt; 'a'] )-\u0026gt;walk( function( $value, $key ) {\n echo 'ASCII ' . $key . ' is ' . $value . \u0026quot;\\n\u0026quot;;\n} );\n/*\nASCII 66 is B\nASCII 97 is a\n*/\n\nMap::from( [1, 2, 3] )-\u0026gt;walk( function( \u0026amp;$value, $key, $data ) {\n $value = $data[$value] ?? $value;\n}, [1 =\u0026gt; 'one', 2 =\u0026gt; 'two'] );\n// ['one', 'two', 3]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e, [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ed\u003c/span\u003e'\u003c/span\u003e], \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ee\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ewalk\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u0026amp;\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e ) {\n \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e = \u003cspan class=\"pl-en\"\u003estrtoupper\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e );\n} );\n\u003cspan class=\"pl-c\"\u003e// ['A', 'B', ['C', 'D'], 'E']\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e66\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eB\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e97\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ewalk\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003eecho\u003c/span\u003e \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eASCII \u003c/span\u003e'\u003c/span\u003e . \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e . \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e is \u003c/span\u003e'\u003c/span\u003e . \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e . \u003cspan class=\"pl-s\"\u003e\"\\n\"\u003c/span\u003e;\n} );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003eASCII 66 is B\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003eASCII 97 is a\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ewalk\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u0026amp;\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edata\u003c/span\u003e ) {\n \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e = \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003edata\u003c/span\u003e[\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e] ?? \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e;\n}, [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eone\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etwo\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e// ['one', 'two', 3]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ewhere()\u003c/h3\u003e\u003ca id=\"user-content-where\" class=\"anchor\" aria-label=\"Permalink: where()\" href=\"#where\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eFilters the list of elements by a given condition.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function where( string $key, string $op, $value ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e where( \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-smi\"\u003estring\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eop\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Key or path of the value of the array or object used for comparison\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003estring\u003c/strong\u003e \u003ccode\u003e$op\u003c/code\u003e Operator used for comparison\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e Value used for comparison\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map for fluid interface\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eAvailable operators are:\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e'==' : Equal\u003c/li\u003e\n\u003cli\u003e'===' : Equal and same type\u003c/li\u003e\n\u003cli\u003e'!=' : Not equal\u003c/li\u003e\n\u003cli\u003e'!==' : Not equal and same type\u003c/li\u003e\n\u003cli\u003e'\u0026lt;=' : Smaller than an equal\u003c/li\u003e\n\u003cli\u003e'\u0026gt;=' : Greater than an equal\u003c/li\u003e\n\u003cli\u003e'\u0026lt;' : Smaller\u003c/li\u003e\n\u003cli\u003e'\u0026gt;' : Greater\u003c/li\u003e\n\u003cli\u003e'in' : Array of value which are in the list of values\u003c/li\u003e\n\u003cli\u003e'-' : Values between array of start and end value, e.g. [10, 100] (inclusive)\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe keys of the original map are preserved in the returned map.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [\n ['id' =\u0026gt; 1, 'type' =\u0026gt; 'name'],\n ['id' =\u0026gt; 2, 'type' =\u0026gt; 'short'],\n] )-\u0026gt;where( 'type', '==', 'name' );\n/*\n[\n ['id' =\u0026gt; 1, 'type' =\u0026gt; 'name']\n]\n*/\n\nMap::from( [\n ['id' =\u0026gt; 3, 'price' =\u0026gt; 10],\n ['id' =\u0026gt; 4, 'price' =\u0026gt; 50],\n] )-\u0026gt;where( 'price', '\u0026gt;', 20 );\n/*\n[\n ['id' =\u0026gt; 4, 'price' =\u0026gt; 50]\n]\n*/\n\nMap::from( [\n ['id' =\u0026gt; 3, 'price' =\u0026gt; 10],\n ['id' =\u0026gt; 4, 'price' =\u0026gt; 50],\n] )-\u0026gt;where( 'price', 'in', [10, 25] );\n/*\n[\n ['id' =\u0026gt; 3, 'price' =\u0026gt; 10]\n]\n*/\n\nMap::from( [\n ['id' =\u0026gt; 3, 'price' =\u0026gt; 10],\n ['id' =\u0026gt; 4, 'price' =\u0026gt; 50],\n] )-\u0026gt;where( 'price', '-', [10, 100] );\n/*\n[\n ['id' =\u0026gt; 3, 'price' =\u0026gt; 10],\n ['id' =\u0026gt; 4, 'price' =\u0026gt; 50]\n]\n*/\n\nMap::from( [\n ['item' =\u0026gt; ['id' =\u0026gt; 3, 'price' =\u0026gt; 10]],\n ['item' =\u0026gt; ['id' =\u0026gt; 4, 'price' =\u0026gt; 50]],\n] )-\u0026gt;where( 'item/price', '\u0026gt;', 30 );\n/*\n[\n ['id' =\u0026gt; 4, 'price' =\u0026gt; 50]\n]\n*/\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etype\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etype\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eshort\u003c/span\u003e'\u003c/span\u003e],\n] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ewhere\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etype\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e==\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ename\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ['id' =\u0026gt; 1, 'type' =\u0026gt; 'name']\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eprice\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eprice\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e],\n] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ewhere\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eprice\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e\u0026gt;\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e20\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ['id' =\u0026gt; 4, 'price' =\u0026gt; 50]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eprice\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eprice\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e],\n] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ewhere\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eprice\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ein\u003c/span\u003e'\u003c/span\u003e, [\u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e25\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ['id' =\u0026gt; 3, 'price' =\u0026gt; 10]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eprice\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eprice\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e],\n] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ewhere\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eprice\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e-\u003c/span\u003e'\u003c/span\u003e, [\u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e100\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ['id' =\u0026gt; 3, 'price' =\u0026gt; 10],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ['id' =\u0026gt; 4, 'price' =\u0026gt; 50]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\n\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eitem\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eprice\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e]],\n [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eitem\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e4\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eprice\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e50\u003c/span\u003e]],\n] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ewhere\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eitem/price\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e\u0026gt;\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e30\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e ['id' =\u0026gt; 4, 'price' =\u0026gt; 50]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#filter\"\u003efilter()\u003c/a\u003e - Runs a filter over each element of the map and returns a new map\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"#grep\"\u003egrep()\u003c/a\u003e - Applies a regular expression to all elements\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ewith()\u003c/h3\u003e\u003ca id=\"user-content-with\" class=\"anchor\" aria-label=\"Permalink: with()\" href=\"#with\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eReturns a copy of the map with the element at the given index replaced with the given value.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function with( $key, $value ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e with( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003eint|string\u003c/strong\u003e \u003ccode\u003e$key\u003c/code\u003e Array key to set or replace\u003c/li\u003e\n\u003cli\u003e@param \u003cstrong\u003emixed\u003c/strong\u003e \u003ccode\u003e$value\u003c/code\u003e New value for the given key\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map of the values\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003eThe original map stays untouched! This method is a shortcut for calling the\n\u003ca href=\"#copy\"\u003ecopy()\u003c/a\u003e and \u003ca href=\"#set\"\u003eset()\u003c/a\u003e methods.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$m = Map::from( ['a' =\u0026gt; 1] );\n\n$m-\u0026gt;with( 2, 'b' );\n// ['a' =\u0026gt; 1, 2 =\u0026gt; 'b']\n\n$m-\u0026gt;with( 'a', 2 );\n// ['a' =\u0026gt; 2]\n\n$m-\u0026gt;all();\n// ['a' =\u0026gt; 1]\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003em\u003c/span\u003e = Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] );\n\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003em\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003ewith\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1, 2 =\u0026gt; 'b']\u003c/span\u003e\n\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003em\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003ewith\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e );\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 2]\u003c/span\u003e\n\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003em\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003eall\u003c/span\u003e();\n\u003cspan class=\"pl-c\"\u003e// ['a' =\u0026gt; 1]\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#set\"\u003eset()\u003c/a\u003e - Sets an element in the map by key without returning a new map\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ezip()\u003c/h3\u003e\u003ca id=\"user-content-zip\" class=\"anchor\" aria-label=\"Permalink: zip()\" href=\"#zip\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eMerges the values of all arrays at the corresponding index.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"public function zip( $array1, ... ) : self\"\u003e\u003cpre\u003e\u003cspan class=\"pl-k\"\u003epublic\u003c/span\u003e \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e zip( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003earray1\u003c/span\u003e, ... ) : \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eself\u003c/span\u003e\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e@param \u003cstrong\u003earray\u0026lt;int|string,mixed\u0026gt;|\\Traversable\u0026lt;int|string,mixed\u0026gt;|\\Iterator\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e \u003ccode\u003e$array1\u003c/code\u003e List of arrays to merge with at the same position\u003c/li\u003e\n\u003cli\u003e@return \u003cstrong\u003eself\u0026lt;int|string,mixed\u0026gt;\u003c/strong\u003e New map of arrays\u003c/li\u003e\n\u003c/ul\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eExamples:\u003c/strong\u003e\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [1, 2, 3] )-\u0026gt;zip( ['one', 'two', 'three'], ['uno', 'dos', 'tres'] );\n/*\n[\n [1, 'one', 'uno'],\n [2, 'two', 'dos'],\n [3, 'three', 'tres'],\n]\n*/\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e2\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003e3\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003ezip\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eone\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etwo\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ethree\u003c/span\u003e'\u003c/span\u003e], [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003euno\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003edos\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003etres\u003c/span\u003e'\u003c/span\u003e] );\n\u003cspan class=\"pl-c\"\u003e/*\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e[\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e [1, 'one', 'uno'],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e [2, 'two', 'dos'],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e [3, 'three', 'tres'],\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e]\u003c/span\u003e\n\u003cspan class=\"pl-c\"\u003e*/\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003e\u003cstrong\u003eSee also:\u003c/strong\u003e\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"#combine\"\u003ecombine()\u003c/a\u003e - Combines the values of the map as keys with the passed elements as values\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eCustom methods\u003c/h2\u003e\u003ca id=\"user-content-custom-methods\" class=\"anchor\" aria-label=\"Permalink: Custom methods\" href=\"#custom-methods\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eMost of the time, it's enough to pass an anonymous function to the \u003ca href=\"#pipe\"\u003epipe()\u003c/a\u003e method\nto implement custom functionality in map objects:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( ['a', 'b'] )-\u0026gt;pipe( function( $map ) {\n return strrev( $map-\u0026gt;join( '-' ) );\n} );\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003epipe\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrrev\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003ejoin\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e-\u003c/span\u003e'\u003c/span\u003e ) );\n} );\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf you need some functionality more often and at different places in your source\ncode, than it's better to register a custom method once and only call it everywhere:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::method( 'strrev', function( $sep ) {\n return strrev( join( '-', $this-\u0026gt;list() ) );\n} );\nMap::from( ['a', 'b'] )-\u0026gt;strrev( '-' );\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003emethod\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003estrrev\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003esep\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-en\"\u003estrrev\u003c/span\u003e( \u003cspan class=\"pl-en\"\u003ejoin\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e-\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e\u003cspan class=\"pl-smi\"\u003ethis\u003c/span\u003e\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003elist\u003c/span\u003e() ) );\n} );\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003estrrev\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e-\u003c/span\u003e'\u003c/span\u003e );\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eMake sure, you register the method before using it. You can pass arbitrary parameters\nto your function and it has access to the internas of the map. Thus, your function\ncan use \u003ccode\u003e$this\u003c/code\u003e to call all available methods:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::method( 'notInBoth', function( iterable $elements ) {\n return new self( $this-\u0026gt;diff( $elements ) + Map::from( $elements )-\u0026gt;diff( $this-\u0026gt;items ) );\n} );\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003emethod\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003enotInBoth\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eself\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e\u003cspan class=\"pl-smi\"\u003ethis\u003c/span\u003e\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003ediff\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e ) + Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eelements\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003ediff\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e\u003cspan class=\"pl-smi\"\u003ethis\u003c/span\u003e\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-c1\"\u003eitems\u003c/span\u003e ) );\n} );\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eYour custom method has access to \u003ccode\u003e$this-\u0026gt;items\u003c/code\u003e array which contains the map\nelements and can also use the internal \u003ccode\u003e$this-\u0026gt;getArray( iterable $list )\u003c/code\u003e method to\nconvert iterable parameters (arrays, generators and objects implementing \\Traversable)\nto plain arrays:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::method( 'mycombine', function( iterable $keys ) {\n return new self( array_combine( $this-\u0026gt;getArray( $keys ), $this-items ) );\n} );\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003emethod\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003emycombine\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-smi\"\u003eiterable\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeys\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eself\u003c/span\u003e( \u003cspan class=\"pl-en\"\u003earray_combine\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e\u003cspan class=\"pl-smi\"\u003ethis\u003c/span\u003e\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003egetArray\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekeys\u003c/span\u003e ), \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e\u003cspan class=\"pl-smi\"\u003ethis\u003c/span\u003e\u003c/span\u003e-items ) );\n} );\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ePerformance\u003c/h2\u003e\u003ca id=\"user-content-performance\" class=\"anchor\" aria-label=\"Permalink: Performance\" href=\"#performance\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe performance most methods only depends on the array_* function that are used\ninternally by the Map class. If the methods of the Map class contains additional\ncode, it's optimized to be as fast as possible.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eCreating Map vs. array\u003c/h3\u003e\u003ca id=\"user-content-creating-map-vs-array\" class=\"anchor\" aria-label=\"Permalink: Creating Map vs. array\" href=\"#creating-map-vs-array\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eCreating an map object with an array instead of creating a plain array only is\nsignificantly slower (ca. 10x) but in absolute values we are talking about nano\nseconds. It will only get notable if you create 10,000 map objects instead of\n10,000 arrays. Then, creating maps will last ca. 10ms longer.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eUsually, this isn't much of a problem because applications create arrays with\nlots of elements instead of 10,000+ arrays. Nevertheless, if your application\ncreates a very large number of arrays within one area, you should think about\navoiding map objects in that area.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eIf you use the \u003ca href=\"#map-function\"\u003emap()\u003c/a\u003e function or \u003ca href=\"#from\"\u003eMap::from()\u003c/a\u003e to create\nmap objects, then be aware that this adds another function call. Using these methods\nfor creating the map object lasts around 1.1x resp. 1.3x compared to the time for\n\u003ccode\u003enew Map()\u003c/code\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eConclusion: Using \u003ccode\u003enew Map()\u003c/code\u003e is fastest and \u003ccode\u003emap()\u003c/code\u003e is faster than \u003ccode\u003eMap::from()\u003c/code\u003e.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ePopulating Map vs. array\u003c/h3\u003e\u003ca id=\"user-content-populating-map-vs-array\" class=\"anchor\" aria-label=\"Permalink: Populating Map vs. array\" href=\"#populating-map-vs-array\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eAdding an element to a Map object using \u003ccode\u003e$map[] = 'a'\u003c/code\u003e is ca. 5x slower than\ndoing the same on a plain array. This is because the method \u003ca href=\"#offsetset\"\u003eoffsetSet()\u003c/a\u003e will\nbe called instead of adding the new element to the array directly. This applies\nto the \u003ccode\u003e$map-\u0026gt;push( 'a' )\u003c/code\u003e method too.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eWhen creating arrays in loops, you should populate the array first and then\ncreate a Map object from the the array:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$list = [];\nfor( $i = 0; $i \u0026lt; 1000; $i++ ) {\n\t$list[] = $i;\n}\n$map = map( $list );\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e = [];\n\u003cspan class=\"pl-k\"\u003efor\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ei\u003c/span\u003e = \u003cspan class=\"pl-c1\"\u003e0\u003c/span\u003e; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ei\u003c/span\u003e \u0026lt; \u003cspan class=\"pl-c1\"\u003e1000\u003c/span\u003e; \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ei\u003c/span\u003e++ ) {\n\t\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e[] = \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ei\u003c/span\u003e;\n}\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e = \u003cspan class=\"pl-en\"\u003emap\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003elist\u003c/span\u003e );\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe array is \u003cstrong\u003eNOT\u003c/strong\u003e copied when creating the Map object so there's virtually no\nperformance loss using the Map afterwards.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eUsing Map methods vs. language constructs\u003c/h3\u003e\u003ca id=\"user-content-using-map-methods-vs-language-constructs\" class=\"anchor\" aria-label=\"Permalink: Using Map methods vs. language constructs\" href=\"#using-map-methods-vs-language-constructs\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eLanguage constructs such as \u003ccode\u003eempty()\u003c/code\u003e, \u003ccode\u003ecount()\u003c/code\u003e or \u003ccode\u003eisset()\u003c/code\u003e are faster than\ncalling a method and using \u003ccode\u003e$map-\u0026gt;isEmpty()\u003c/code\u003e or \u003ccode\u003e$map-\u0026gt;count()\u003c/code\u003e is ca. 4x\nslower.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eAgain, we are talking about nano seconds. For 10,000 calls to \u003ccode\u003eempty( $array )\u003c/code\u003e\ncompared to \u003ccode\u003e$map-\u0026gt;isEmpty()\u003c/code\u003e, the costs are around 4ms in total.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eUsing Map methods vs. array_* functions\u003c/h3\u003e\u003ca id=\"user-content-using-map-methods-vs-array_-functions\" class=\"anchor\" aria-label=\"Permalink: Using Map methods vs. array_* functions\" href=\"#using-map-methods-vs-array_-functions\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eUsing the Map methods instead of the array_* functions adds an additional method\ncall. Internally, the Map objects uses the same array_* functions but offers a\nmuch more usable interface.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe time for the additional method call is almost neglectable because the array_*\nmethods needs much longer to perform the operation on the array elements depending\non the size of the array.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eUsing anonymous functions\u003c/h3\u003e\u003ca id=\"user-content-using-anonymous-functions\" class=\"anchor\" aria-label=\"Permalink: Using anonymous functions\" href=\"#using-anonymous-functions\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSeveral Map methods support passing an anonymous function that is applied to\nevery element of the map. PHP needs some time to call the passed function and\nto execute its code. Depending on the number of elements, this may have a\nsignificant impact on performance!\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThe \u003ca href=\"#pipe\"\u003epipe()\u003c/a\u003e method of the Map object is an exception because it receives the\nwhole map object instead of each element separately. Its performance mainly\ndepends on the implemented code:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$map-\u0026gt;pipe( function( Map $map ) {\n\t// perform operations on the map\n} );\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003epipe\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-smi\"\u003e\u003cspan class=\"pl-smi\"\u003eMap\u003c/span\u003e\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e ) {\n\t\u003cspan class=\"pl-c\"\u003e// perform operations on the map\u003c/span\u003e\n} );\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eUsing shift() and unshift()\u003c/h3\u003e\u003ca id=\"user-content-using-shift-and-unshift\" class=\"anchor\" aria-label=\"Permalink: Using shift() and unshift()\" href=\"#using-shift-and-unshift\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eBoth methods are costly, especially on large arrays. The used \u003ccode\u003earray_shift()\u003c/code\u003e and\n\u003ccode\u003earray_unshift()\u003c/code\u003e functions will reindex all numerical keys of the array.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eIf you want to reduce or create a large list of elements from the beginning in\nan iterative way, you should use \u003ca href=\"#reverse\"\u003ereverse()\u003c/a\u003e and \u003ca href=\"#pop\"\u003epop()\u003c/a\u003e/\u003ca href=\"#push\"\u003epush()\u003c/a\u003e\ninstead of \u003ca href=\"#shift\"\u003eshift()\u003c/a\u003e and \u003ca href=\"#unshift\"\u003eunshift()\u003c/a\u003e/\u003ca href=\"#prepend\"\u003eprepend()\u003c/a\u003e:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$map-\u0026gt;reverse()-\u0026gt;pop(); // use pop() until it returns NULL\n$map-\u0026gt;push( 'z' )-\u0026gt;push( 'y' )-\u0026gt;push( 'x' )-\u0026gt;reverse(); // use push() for adding\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003ereverse\u003c/span\u003e()-\u0026gt;\u003cspan class=\"pl-en\"\u003epop\u003c/span\u003e(); \u003cspan class=\"pl-c\"\u003e// use pop() until it returns NULL\u003c/span\u003e\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003epush\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ez\u003c/span\u003e'\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003epush\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ey\u003c/span\u003e'\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003epush\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003ereverse\u003c/span\u003e(); \u003cspan class=\"pl-c\"\u003e// use push() for adding\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eUpgrade guide\u003c/h2\u003e\u003ca id=\"user-content-upgrade-guide\" class=\"anchor\" aria-label=\"Permalink: Upgrade guide\" href=\"#upgrade-guide\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e2.x -\u0026gt; 3.x\u003c/h3\u003e\u003ca id=\"user-content-2x---3x\" class=\"anchor\" aria-label=\"Permalink: 2.x -\u0026gt; 3.x\" href=\"#2x---3x\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eUse list() method\u003c/h4\u003e\u003ca id=\"user-content-use-list-method\" class=\"anchor\" aria-label=\"Permalink: Use list() method\" href=\"#use-list-method\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eWhen adding own methods to the Map object, don't access the \u003ccode\u003e$this-\u0026gt;list\u003c/code\u003e class\nvariable directly. It's not guaranteed to be an array any more but will store\nthe value passed to the Map constructor. Instead, use the `list() method to get\na reference to the array of elements:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$this-\u0026gt;list();\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e\u003cspan class=\"pl-smi\"\u003ethis\u003c/span\u003e\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003elist\u003c/span\u003e();\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eAs it's a reference to the array of elements, you can modify it directly or even\nuse PHP functions that require a variable reference:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$this-\u0026gt;list()[] = 123;\nreset( $this-\u0026gt;list() );\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e\u003cspan class=\"pl-smi\"\u003ethis\u003c/span\u003e\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003elist\u003c/span\u003e()[] = \u003cspan class=\"pl-c1\"\u003e123\u003c/span\u003e;\n\u003cspan class=\"pl-en\"\u003ereset\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e\u003cspan class=\"pl-smi\"\u003ethis\u003c/span\u003e\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003elist\u003c/span\u003e() );\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eRenamed internal methods\u003c/h4\u003e\u003ca id=\"user-content-renamed-internal-methods\" class=\"anchor\" aria-label=\"Permalink: Renamed internal methods\" href=\"#renamed-internal-methods\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTwo internal methods have been renamed and you have to use their new name if you\nhave added own methods to the Map object:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"// instead of $this-\u0026gt;getArray( $array )\n$this-\u0026gt;array( $array )\n\n // instead of $this-\u0026gt;getValue( $entry, array $parts )\n$this-\u0026gt;val( $entry, array $parts )\"\u003e\u003cpre\u003e\u003cspan class=\"pl-c\"\u003e// instead of $this-\u0026gt;getArray( $array )\u003c/span\u003e\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e\u003cspan class=\"pl-smi\"\u003ethis\u003c/span\u003e\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003earray\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003earray\u003c/span\u003e )\n\n \u003cspan class=\"pl-c\"\u003e// instead of $this-\u0026gt;getValue( $entry, array $parts )\u003c/span\u003e\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003e\u003cspan class=\"pl-smi\"\u003ethis\u003c/span\u003e\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003eval\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eentry\u003c/span\u003e, array \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003eparts\u003c/span\u003e )\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch3 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003e1.x -\u0026gt; 2.x\u003c/h3\u003e\u003ca id=\"user-content-1x---2x\" class=\"anchor\" aria-label=\"Permalink: 1.x -\u0026gt; 2.x\" href=\"#1x---2x\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003ejQuery style method calls\u003c/h4\u003e\u003ca id=\"user-content-jquery-style-method-calls\" class=\"anchor\" aria-label=\"Permalink: jQuery style method calls\" href=\"#jquery-style-method-calls\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eYou can call methods of objects in a map like this:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"// MyClass implements setStatus() (returning $this) and getCode() (initialized by constructor)\n\n$map = Map::from( ['a' =\u0026gt; new MyClass( 'x' ), 'b' =\u0026gt; new MyClass( 'y' )] );\n$map-\u0026gt;setStatus( 1 )-\u0026gt;getCode()-\u0026gt;toArray();\"\u003e\u003cpre\u003e\u003cspan class=\"pl-c\"\u003e// MyClass implements setStatus() (returning $this) and getCode() (initialized by constructor)\u003c/span\u003e\n\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e = Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMyClass\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex\u003c/span\u003e'\u003c/span\u003e ), \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-k\"\u003enew\u003c/span\u003e \u003cspan class=\"pl-v\"\u003eMyClass\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ey\u003c/span\u003e'\u003c/span\u003e )] );\n\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003emap\u003c/span\u003e-\u0026gt;\u003cspan class=\"pl-en\"\u003esetStatus\u003c/span\u003e( \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e )-\u0026gt;\u003cspan class=\"pl-en\"\u003egetCode\u003c/span\u003e()-\u0026gt;\u003cspan class=\"pl-en\"\u003etoArray\u003c/span\u003e();\u003c/pre\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eBefore, it was checked if the objects really implement \u003ccode\u003esetStatus()\u003c/code\u003e and \u003ccode\u003egetCode()\u003c/code\u003e.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003eThis isn't the case any more to avoid returning an empty map if the method name is\nwrong or the called method is implemented using the \u003ccode\u003e__call()\u003c/code\u003e magic method. Now, PHP\ngenerates a fatal error if the method isn't implemented by all objects.\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eSecond equals() parameter\u003c/h4\u003e\u003ca id=\"user-content-second-equals-parameter\" class=\"anchor\" aria-label=\"Permalink: Second equals() parameter\" href=\"#second-equals-parameter\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe second parameter of the \u003ca href=\"#equals\"\u003eequals()\u003c/a\u003e method (\u003ccode\u003e$assoc\u003c/code\u003e) to compare keys\ntoo has been removed. Use the \u003ca href=\"#is\"\u003eis()\u003c/a\u003e method instead:\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"// 1.x\nmap( ['one' =\u0026gt; 1] )-\u0026gt;equals( ['one' =\u0026gt; 1], true );\n\n// 2.x\nmap( ['one' =\u0026gt; 1] )-\u0026gt;is( ['one' =\u0026gt; 1] );\"\u003e\u003cpre\u003e\u003cspan class=\"pl-c\"\u003e// 1.x\u003c/span\u003e\n\u003cspan class=\"pl-en\"\u003emap\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eone\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eequals\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eone\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e], \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\n\u003cspan class=\"pl-c\"\u003e// 2.x\u003c/span\u003e\n\u003cspan class=\"pl-en\"\u003emap\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eone\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003eis\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eone\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e1\u003c/span\u003e] );\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eNew find() argument\u003c/h4\u003e\u003ca id=\"user-content-new-find-argument\" class=\"anchor\" aria-label=\"Permalink: New find() argument\" href=\"#new-find-argument\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eA default value or exception object can be passed to the \u003ca href=\"#find\"\u003efind()\u003c/a\u003e method now\nas second argument. The \u003ccode\u003e$reverse\u003c/code\u003e argument has been moved to the third position.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"// 1.x\nMap::from( ['a', 'c', 'e'] )-\u0026gt;find( function( $value, $key ) {\n return $value \u0026gt;= 'b';\n}, true );\n\n// 2.x\nMap::from( ['a', 'c', 'e'] )-\u0026gt;find( function( $value, $key ) {\n return $value \u0026gt;= 'b';\n}, null, true );\"\u003e\u003cpre\u003e\u003cspan class=\"pl-c\"\u003e// 1.x\u003c/span\u003e\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ee\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efind\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e \u0026gt;= \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e;\n}, \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\n\n\u003cspan class=\"pl-c\"\u003e// 2.x\u003c/span\u003e\nMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ec\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ee\u003c/span\u003e'\u003c/span\u003e] )-\u0026gt;\u003cspan class=\"pl-en\"\u003efind\u003c/span\u003e( \u003cspan class=\"pl-k\"\u003efunction\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e, \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003ekey\u003c/span\u003e ) {\n \u003cspan class=\"pl-k\"\u003ereturn\u003c/span\u003e \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003evalue\u003c/span\u003e \u0026gt;= \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eb\u003c/span\u003e'\u003c/span\u003e;\n}, \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e, \u003cspan class=\"pl-c1\"\u003etrue\u003c/span\u003e );\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003egroupBy() semantic change\u003c/h4\u003e\u003ca id=\"user-content-groupby-semantic-change\" class=\"anchor\" aria-label=\"Permalink: groupBy() semantic change\" href=\"#groupby-semantic-change\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eIf the key passed to \u003ca href=\"#groupby\"\u003egroupBy()\u003c/a\u003e didn't exist, the items have been grouped\nusing the given key. Now, an empty string is used as key to offer easier checking and\nsorting of the keys.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"Map::from( [\n 10 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-abc'],\n] )-\u0026gt;groupBy( 'xid' );\n\n// 1.x\n[\n 'xid' =\u0026gt; [\n 10 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-abc']\n ]\n]\n\n// 2.x\n[\n '' =\u0026gt; [\n 10 =\u0026gt; ['aid' =\u0026gt; 123, 'code' =\u0026gt; 'x-abc']\n ]\n]\"\u003e\u003cpre\u003eMap::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\n \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e123\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecode\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex-abc\u003c/span\u003e'\u003c/span\u003e],\n] )-\u0026gt;\u003cspan class=\"pl-en\"\u003egroupBy\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003exid\u003c/span\u003e'\u003c/span\u003e );\n\n\u003cspan class=\"pl-c\"\u003e// 1.x\u003c/span\u003e\n[\n \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003exid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; [\n \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e123\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecode\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex-abc\u003c/span\u003e'\u003c/span\u003e]\n ]\n]\n\n\u003cspan class=\"pl-c\"\u003e// 2.x\u003c/span\u003e\n[\n \u003cspan class=\"pl-s\"\u003e''\u003c/span\u003e =\u0026gt; [\n \u003cspan class=\"pl-c1\"\u003e10\u003c/span\u003e =\u0026gt; [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003eaid\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003e123\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ecode\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ex-abc\u003c/span\u003e'\u003c/span\u003e]\n ]\n]\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eoffsetExists() semantic change\u003c/h4\u003e\u003ca id=\"user-content-offsetexists-semantic-change\" class=\"anchor\" aria-label=\"Permalink: offsetExists() semantic change\" href=\"#offsetexists-semantic-change\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eTo be consistent with typical PHP behavior, the \u003ca href=\"#offsetexists\"\u003eoffsetExists()\u003c/a\u003e method\nuse \u003ccode\u003eisset()\u003c/code\u003e instead of \u003ccode\u003earray_key_exists()\u003c/code\u003e now. This changes the behavior when dealing\nwith NULL values.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"$m = Map::from( ['foo' =\u0026gt; null] );\n\n// 1.x\nisset( $m['foo'] ); // true\n\n// 2.x\nisset( $m['foo'] ); // false\"\u003e\u003cpre\u003e\u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003em\u003c/span\u003e = Map::\u003cspan class=\"pl-en\"\u003efrom\u003c/span\u003e( [\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e =\u0026gt; \u003cspan class=\"pl-c1\"\u003enull\u003c/span\u003e] );\n\n\u003cspan class=\"pl-c\"\u003e// 1.x\u003c/span\u003e\n\u003cspan class=\"pl-en\"\u003eisset\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003em\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e] ); \u003cspan class=\"pl-c\"\u003e// true\u003c/span\u003e\n\n\u003cspan class=\"pl-c\"\u003e// 2.x\u003c/span\u003e\n\u003cspan class=\"pl-en\"\u003eisset\u003c/span\u003e( \u003cspan class=\"pl-s1\"\u003e\u003cspan class=\"pl-c1\"\u003e$\u003c/span\u003em\u003c/span\u003e[\u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003efoo\u003c/span\u003e'\u003c/span\u003e] ); \u003cspan class=\"pl-c\"\u003e// false\u003c/span\u003e\u003c/pre\u003e\u003c/div\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch4 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eRenamed split() method\u003c/h4\u003e\u003ca id=\"user-content-renamed-split-method\" class=\"anchor\" aria-label=\"Permalink: Renamed split() method\" href=\"#renamed-split-method\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eThe static \u003ccode\u003eMap::split()\u003c/code\u003e method has been renamed to \u003ca href=\"#explode\"\u003eMap::explode()\u003c/a\u003e and\nthe argument order has changed. This avoids conflicts with the Laravel split() method\nand is in line with the PHP \u003ccode\u003eexplode()\u003c/code\u003e method.\u003c/p\u003e\n\u003cdiv class=\"highlight highlight-text-html-php notranslate position-relative overflow-auto\" dir=\"auto\" data-snippet-clipboard-copy-content=\"// 1.x\nMap::split( 'a,b,c', ',' );\n\n// 2.x\nMap::explode( ',', 'a,b,c' );\"\u003e\u003cpre\u003e\u003cspan class=\"pl-c\"\u003e// 1.x\u003c/span\u003e\nMap::\u003cspan class=\"pl-en\"\u003esplit\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea,b,c\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e,\u003c/span\u003e'\u003c/span\u003e );\n\n\u003cspan class=\"pl-c\"\u003e// 2.x\u003c/span\u003e\nMap::\u003cspan class=\"pl-en\"\u003eexplode\u003c/span\u003e( \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003e,\u003c/span\u003e'\u003c/span\u003e, \u003cspan class=\"pl-s\"\u003e'\u003cspan class=\"pl-s\"\u003ea,b,c\u003c/span\u003e'\u003c/span\u003e );\u003c/pre\u003e\u003c/div\u003e\n\u003c/article\u003e","loaded":true,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":[{"level":1,"text":"PHP arrays and collections made easy","anchor":"php-arrays-and-collections-made-easy","htmlText":"PHP arrays and collections made easy"},{"level":2,"text":"Why PHP Map","anchor":"why-php-map","htmlText":"Why PHP Map"},{"level":2,"text":"Methods","anchor":"methods","htmlText":"Methods"},{"level":3,"text":"Create","anchor":"create","htmlText":"Create"},{"level":3,"text":"Access","anchor":"access","htmlText":"Access"},{"level":3,"text":"Add","anchor":"add","htmlText":"Add"},{"level":3,"text":"Aggregate","anchor":"aggregate","htmlText":"Aggregate"},{"level":3,"text":"Debug","anchor":"debug","htmlText":"Debug"},{"level":3,"text":"Order By","anchor":"order-by","htmlText":"Order By"},{"level":3,"text":"Shorten","anchor":"shorten","htmlText":"Shorten"},{"level":3,"text":"Test","anchor":"test","htmlText":"Test"},{"level":3,"text":"Mutate","anchor":"mutate","htmlText":"Mutate"},{"level":3,"text":"Misc","anchor":"misc","htmlText":"Misc"},{"level":2,"text":"Method documentation","anchor":"method-documentation","htmlText":"Method documentation"},{"level":3,"text":"is_map() function","anchor":"is_map-function","htmlText":"is_map() function"},{"level":3,"text":"map() function","anchor":"map-function","htmlText":"map() function"},{"level":3,"text":"__construct()","anchor":"__construct","htmlText":"__construct()"},{"level":3,"text":"__call()","anchor":"__call","htmlText":"__call()"},{"level":3,"text":"__callStatic()","anchor":"__callstatic","htmlText":"__callStatic()"},{"level":3,"text":"after()","anchor":"after","htmlText":"after()"},{"level":3,"text":"all()","anchor":"all","htmlText":"all()"},{"level":3,"text":"any()","anchor":"any","htmlText":"any()"},{"level":3,"text":"arsort()","anchor":"arsort","htmlText":"arsort()"},{"level":3,"text":"arsorted()","anchor":"arsorted","htmlText":"arsorted()"},{"level":3,"text":"asort()","anchor":"asort","htmlText":"asort()"},{"level":3,"text":"asorted()","anchor":"asorted","htmlText":"asorted()"},{"level":3,"text":"at()","anchor":"at","htmlText":"at()"},{"level":3,"text":"avg()","anchor":"avg","htmlText":"avg()"},{"level":3,"text":"before()","anchor":"before","htmlText":"before()"},{"level":3,"text":"bool()","anchor":"bool","htmlText":"bool()"},{"level":3,"text":"call()","anchor":"call","htmlText":"call()"},{"level":3,"text":"cast()","anchor":"cast","htmlText":"cast()"},{"level":3,"text":"chunk()","anchor":"chunk","htmlText":"chunk()"},{"level":3,"text":"clear()","anchor":"clear","htmlText":"clear()"},{"level":3,"text":"clone()","anchor":"clone","htmlText":"clone()"},{"level":3,"text":"col()","anchor":"col","htmlText":"col()"},{"level":3,"text":"collapse()","anchor":"collapse","htmlText":"collapse()"},{"level":3,"text":"combine()","anchor":"combine","htmlText":"combine()"},{"level":3,"text":"concat()","anchor":"concat","htmlText":"concat()"},{"level":3,"text":"contains()","anchor":"contains","htmlText":"contains()"},{"level":3,"text":"copy()","anchor":"copy","htmlText":"copy()"},{"level":3,"text":"count()","anchor":"count","htmlText":"count()"},{"level":3,"text":"countBy()","anchor":"countby","htmlText":"countBy()"},{"level":3,"text":"dd()","anchor":"dd","htmlText":"dd()"},{"level":3,"text":"delimiter()","anchor":"delimiter","htmlText":"delimiter()"},{"level":3,"text":"diff()","anchor":"diff","htmlText":"diff()"},{"level":3,"text":"diffAssoc()","anchor":"diffassoc","htmlText":"diffAssoc()"},{"level":3,"text":"diffKeys()","anchor":"diffkeys","htmlText":"diffKeys()"},{"level":3,"text":"dump()","anchor":"dump","htmlText":"dump()"},{"level":3,"text":"duplicates()","anchor":"duplicates","htmlText":"duplicates()"},{"level":3,"text":"each()","anchor":"each","htmlText":"each()"},{"level":3,"text":"empty()","anchor":"empty","htmlText":"empty()"},{"level":3,"text":"equals()","anchor":"equals","htmlText":"equals()"},{"level":3,"text":"every()","anchor":"every","htmlText":"every()"},{"level":3,"text":"except()","anchor":"except","htmlText":"except()"},{"level":3,"text":"explode()","anchor":"explode","htmlText":"explode()"},{"level":3,"text":"fill()","anchor":"fill","htmlText":"fill()"},{"level":3,"text":"filter()","anchor":"filter","htmlText":"filter()"},{"level":3,"text":"find()","anchor":"find","htmlText":"find()"},{"level":3,"text":"findKey()","anchor":"findkey","htmlText":"findKey()"},{"level":3,"text":"first()","anchor":"first","htmlText":"first()"},{"level":3,"text":"firstKey()","anchor":"firstkey","htmlText":"firstKey()"},{"level":3,"text":"flat()","anchor":"flat","htmlText":"flat()"},{"level":3,"text":"flip()","anchor":"flip","htmlText":"flip()"},{"level":3,"text":"float()","anchor":"float","htmlText":"float()"},{"level":3,"text":"from()","anchor":"from","htmlText":"from()"},{"level":3,"text":"fromJson()","anchor":"fromjson","htmlText":"fromJson()"},{"level":3,"text":"get()","anchor":"get","htmlText":"get()"},{"level":3,"text":"getIterator()","anchor":"getiterator","htmlText":"getIterator()"},{"level":3,"text":"grep()","anchor":"grep","htmlText":"grep()"},{"level":3,"text":"groupBy()","anchor":"groupby","htmlText":"groupBy()"},{"level":3,"text":"has()","anchor":"has","htmlText":"has()"},{"level":3,"text":"if()","anchor":"if","htmlText":"if()"},{"level":3,"text":"ifAny()","anchor":"ifany","htmlText":"ifAny()"},{"level":3,"text":"ifEmpty()","anchor":"ifempty","htmlText":"ifEmpty()"},{"level":3,"text":"implements()","anchor":"implements","htmlText":"implements()"},{"level":3,"text":"in()","anchor":"in","htmlText":"in()"},{"level":3,"text":"includes()","anchor":"includes","htmlText":"includes()"},{"level":3,"text":"index()","anchor":"index","htmlText":"index()"},{"level":3,"text":"insertAfter()","anchor":"insertafter","htmlText":"insertAfter()"},{"level":3,"text":"insertAt()","anchor":"insertat","htmlText":"insertAt()"},{"level":3,"text":"insertBefore()","anchor":"insertbefore","htmlText":"insertBefore()"},{"level":3,"text":"inString()","anchor":"instring","htmlText":"inString()"},{"level":3,"text":"int()","anchor":"int","htmlText":"int()"},{"level":3,"text":"intersect()","anchor":"intersect","htmlText":"intersect()"},{"level":3,"text":"intersectAssoc()","anchor":"intersectassoc","htmlText":"intersectAssoc()"},{"level":3,"text":"intersectKeys()","anchor":"intersectkeys","htmlText":"intersectKeys()"},{"level":3,"text":"is()","anchor":"is","htmlText":"is()"},{"level":3,"text":"isEmpty()","anchor":"isempty","htmlText":"isEmpty()"},{"level":3,"text":"isList()","anchor":"islist","htmlText":"isList()"},{"level":3,"text":"isObject()","anchor":"isobject","htmlText":"isObject()"},{"level":3,"text":"isNumeric()","anchor":"isnumeric","htmlText":"isNumeric()"},{"level":3,"text":"isScalar()","anchor":"isscalar","htmlText":"isScalar()"},{"level":3,"text":"isString()","anchor":"isstring","htmlText":"isString()"},{"level":3,"text":"join()","anchor":"join","htmlText":"join()"},{"level":3,"text":"jsonSerialize()","anchor":"jsonserialize","htmlText":"jsonSerialize()"},{"level":3,"text":"keys()","anchor":"keys","htmlText":"keys()"},{"level":3,"text":"krsort()","anchor":"krsort","htmlText":"krsort()"},{"level":3,"text":"krsorted()","anchor":"krsorted","htmlText":"krsorted()"},{"level":3,"text":"krsorted()","anchor":"krsorted-1","htmlText":"krsorted()"},{"level":3,"text":"ksort()","anchor":"ksort","htmlText":"ksort()"},{"level":3,"text":"ksorted()","anchor":"ksorted","htmlText":"ksorted()"},{"level":3,"text":"last()","anchor":"last","htmlText":"last()"},{"level":3,"text":"lastKey()","anchor":"lastkey","htmlText":"lastKey()"},{"level":3,"text":"ltrim()","anchor":"ltrim","htmlText":"ltrim()"},{"level":3,"text":"map()","anchor":"map","htmlText":"map()"},{"level":3,"text":"max()","anchor":"max","htmlText":"max()"},{"level":3,"text":"merge()","anchor":"merge","htmlText":"merge()"},{"level":3,"text":"method()","anchor":"method","htmlText":"method()"},{"level":3,"text":"min()","anchor":"min","htmlText":"min()"},{"level":3,"text":"none()","anchor":"none","htmlText":"none()"},{"level":3,"text":"nth()","anchor":"nth","htmlText":"nth()"},{"level":3,"text":"offsetExists()","anchor":"offsetexists","htmlText":"offsetExists()"},{"level":3,"text":"offsetGet()","anchor":"offsetget","htmlText":"offsetGet()"},{"level":3,"text":"offsetSet()","anchor":"offsetset","htmlText":"offsetSet()"},{"level":3,"text":"offsetUnset()","anchor":"offsetunset","htmlText":"offsetUnset()"},{"level":3,"text":"only()","anchor":"only","htmlText":"only()"},{"level":3,"text":"order()","anchor":"order","htmlText":"order()"},{"level":3,"text":"pad()","anchor":"pad","htmlText":"pad()"},{"level":3,"text":"partition()","anchor":"partition","htmlText":"partition()"},{"level":3,"text":"percentage()","anchor":"percentage","htmlText":"percentage()"},{"level":3,"text":"pipe()","anchor":"pipe","htmlText":"pipe()"},{"level":3,"text":"pluck()","anchor":"pluck","htmlText":"pluck()"},{"level":3,"text":"pop()","anchor":"pop","htmlText":"pop()"},{"level":3,"text":"pos","anchor":"pos","htmlText":"pos"},{"level":3,"text":"prefix","anchor":"prefix","htmlText":"prefix"},{"level":3,"text":"prepend()","anchor":"prepend","htmlText":"prepend()"},{"level":3,"text":"pull()","anchor":"pull","htmlText":"pull()"},{"level":3,"text":"push()","anchor":"push","htmlText":"push()"},{"level":3,"text":"put()","anchor":"put","htmlText":"put()"},{"level":3,"text":"random()","anchor":"random","htmlText":"random()"},{"level":3,"text":"reduce()","anchor":"reduce","htmlText":"reduce()"},{"level":3,"text":"reject()","anchor":"reject","htmlText":"reject()"},{"level":3,"text":"rekey()","anchor":"rekey","htmlText":"rekey()"},{"level":3,"text":"remove()","anchor":"remove","htmlText":"remove()"},{"level":3,"text":"replace()","anchor":"replace","htmlText":"replace()"},{"level":3,"text":"reverse()","anchor":"reverse","htmlText":"reverse()"},{"level":3,"text":"reversed()","anchor":"reversed","htmlText":"reversed()"},{"level":3,"text":"rsort()","anchor":"rsort","htmlText":"rsort()"},{"level":3,"text":"rsorted()","anchor":"rsorted","htmlText":"rsorted()"},{"level":3,"text":"rtrim()","anchor":"rtrim","htmlText":"rtrim()"},{"level":3,"text":"search()","anchor":"search","htmlText":"search()"},{"level":3,"text":"sep()","anchor":"sep","htmlText":"sep()"},{"level":3,"text":"set()","anchor":"set","htmlText":"set()"},{"level":3,"text":"shift()","anchor":"shift","htmlText":"shift()"},{"level":3,"text":"shuffle()","anchor":"shuffle","htmlText":"shuffle()"},{"level":3,"text":"shuffled()","anchor":"shuffled","htmlText":"shuffled()"},{"level":3,"text":"skip()","anchor":"skip","htmlText":"skip()"},{"level":3,"text":"slice()","anchor":"slice","htmlText":"slice()"},{"level":3,"text":"some()","anchor":"some","htmlText":"some()"},{"level":3,"text":"sort()","anchor":"sort","htmlText":"sort()"},{"level":3,"text":"sorted()","anchor":"sorted","htmlText":"sorted()"},{"level":3,"text":"splice()","anchor":"splice","htmlText":"splice()"},{"level":3,"text":"strAfter()","anchor":"strafter","htmlText":"strAfter()"},{"level":3,"text":"strBefore()","anchor":"strbefore","htmlText":"strBefore()"},{"level":3,"text":"strCompare()","anchor":"strcompare","htmlText":"strCompare()"},{"level":3,"text":"strContains()","anchor":"strcontains","htmlText":"strContains()"},{"level":3,"text":"strContainsAll()","anchor":"strcontainsall","htmlText":"strContainsAll()"},{"level":3,"text":"strEnds()","anchor":"strends","htmlText":"strEnds()"},{"level":3,"text":"strEndsAll()","anchor":"strendsall","htmlText":"strEndsAll()"},{"level":3,"text":"string()","anchor":"string","htmlText":"string()"},{"level":3,"text":"strLower()","anchor":"strlower","htmlText":"strLower()"},{"level":3,"text":"strReplace()","anchor":"strreplace","htmlText":"strReplace()"},{"level":3,"text":"strStarts()","anchor":"strstarts","htmlText":"strStarts()"},{"level":3,"text":"strStartsAll()","anchor":"strstartsall","htmlText":"strStartsAll()"},{"level":3,"text":"strUpper()","anchor":"strupper","htmlText":"strUpper()"},{"level":3,"text":"suffix","anchor":"suffix","htmlText":"suffix"},{"level":3,"text":"sum()","anchor":"sum","htmlText":"sum()"},{"level":3,"text":"take()","anchor":"take","htmlText":"take()"},{"level":3,"text":"tap()","anchor":"tap","htmlText":"tap()"},{"level":3,"text":"times()","anchor":"times","htmlText":"times()"},{"level":3,"text":"to()","anchor":"to","htmlText":"to()"},{"level":3,"text":"toArray()","anchor":"toarray","htmlText":"toArray()"},{"level":3,"text":"toJson()","anchor":"tojson","htmlText":"toJson()"},{"level":3,"text":"toReversed()","anchor":"toreversed","htmlText":"toReversed()"},{"level":3,"text":"toSorted()","anchor":"tosorted","htmlText":"toSorted()"},{"level":3,"text":"toUrl()","anchor":"tourl","htmlText":"toUrl()"},{"level":3,"text":"transform()","anchor":"transform","htmlText":"transform()"},{"level":3,"text":"transpose()","anchor":"transpose","htmlText":"transpose()"},{"level":3,"text":"traverse()","anchor":"traverse","htmlText":"traverse()"},{"level":3,"text":"tree()","anchor":"tree","htmlText":"tree()"},{"level":3,"text":"trim()","anchor":"trim","htmlText":"trim()"},{"level":3,"text":"uasort()","anchor":"uasort","htmlText":"uasort()"},{"level":3,"text":"uasorted()","anchor":"uasorted","htmlText":"uasorted()"},{"level":3,"text":"uksort()","anchor":"uksort","htmlText":"uksort()"},{"level":3,"text":"uksorted()","anchor":"uksorted","htmlText":"uksorted()"},{"level":3,"text":"union()","anchor":"union","htmlText":"union()"},{"level":3,"text":"unique()","anchor":"unique","htmlText":"unique()"},{"level":3,"text":"unshift()","anchor":"unshift","htmlText":"unshift()"},{"level":3,"text":"usort()","anchor":"usort","htmlText":"usort()"},{"level":3,"text":"usorted()","anchor":"usorted","htmlText":"usorted()"},{"level":3,"text":"values()","anchor":"values","htmlText":"values()"},{"level":3,"text":"walk()","anchor":"walk","htmlText":"walk()"},{"level":3,"text":"where()","anchor":"where","htmlText":"where()"},{"level":3,"text":"with()","anchor":"with","htmlText":"with()"},{"level":3,"text":"zip()","anchor":"zip","htmlText":"zip()"},{"level":2,"text":"Custom methods","anchor":"custom-methods","htmlText":"Custom methods"},{"level":2,"text":"Performance","anchor":"performance","htmlText":"Performance"},{"level":3,"text":"Creating Map vs. array","anchor":"creating-map-vs-array","htmlText":"Creating Map vs. array"},{"level":3,"text":"Populating Map vs. array","anchor":"populating-map-vs-array","htmlText":"Populating Map vs. array"},{"level":3,"text":"Using Map methods vs. language constructs","anchor":"using-map-methods-vs-language-constructs","htmlText":"Using Map methods vs. language constructs"},{"level":3,"text":"Using Map methods vs. array_* functions","anchor":"using-map-methods-vs-array_-functions","htmlText":"Using Map methods vs. array_* functions"},{"level":3,"text":"Using anonymous functions","anchor":"using-anonymous-functions","htmlText":"Using anonymous functions"},{"level":3,"text":"Using shift() and unshift()","anchor":"using-shift-and-unshift","htmlText":"Using shift() and unshift()"},{"level":2,"text":"Upgrade guide","anchor":"upgrade-guide","htmlText":"Upgrade guide"},{"level":3,"text":"2.x -\u003e 3.x","anchor":"2x---3x","htmlText":"2.x -\u0026gt; 3.x"},{"level":4,"text":"Use list() method","anchor":"use-list-method","htmlText":"Use list() method"},{"level":4,"text":"Renamed internal methods","anchor":"renamed-internal-methods","htmlText":"Renamed internal methods"},{"level":3,"text":"1.x -\u003e 2.x","anchor":"1x---2x","htmlText":"1.x -\u0026gt; 2.x"},{"level":4,"text":"jQuery style method calls","anchor":"jquery-style-method-calls","htmlText":"jQuery style method calls"},{"level":4,"text":"Second equals() parameter","anchor":"second-equals-parameter","htmlText":"Second equals() parameter"},{"level":4,"text":"New find() argument","anchor":"new-find-argument","htmlText":"New find() argument"},{"level":4,"text":"groupBy() semantic change","anchor":"groupby-semantic-change","htmlText":"groupBy() semantic change"},{"level":4,"text":"offsetExists() semantic change","anchor":"offsetexists-semantic-change","htmlText":"offsetExists() semantic change"},{"level":4,"text":"Renamed split() method","anchor":"renamed-split-method","htmlText":"Renamed split() method"}],"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Faimeos%2Fmap"}},{"displayName":"LICENSE","repoName":"map","refName":"3.x","path":"LICENSE","preferredFileType":"license","tabName":"MIT","richText":null,"loaded":false,"timedOut":false,"errorMessage":null,"headerInfo":{"toc":null,"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2Faimeos%2Fmap"}}],"overviewFilesProcessingTime":0}},"appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-7d7eb7c71814.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-708ec8ade250.js","githubDevUrl":null,"enabled_features":{"copilot_workspace":null,"code_nav_ui_events":false,"overview_shared_code_dropdown_button":true,"react_blob_overlay":false,"accessible_code_button":true,"github_models_repo_integration":false}}}}</script> <div data-target="react-partial.reactRoot"><style data-styled="true" data-styled-version="5.3.11">.iVEunk{margin-top:16px;margin-bottom:16px;}/*!sc*/ .jzuOtQ{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;}/*!sc*/ .bGojzy{margin-bottom:0;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;row-gap:16px;}/*!sc*/ .iNSVHo{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;padding-bottom:16px;padding-top:8px;}/*!sc*/ .bVgnfw{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;gap:8px;}/*!sc*/ @media screen and (max-width:320px){.bVgnfw{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}}/*!sc*/ .CEgMp{position:relative;}/*!sc*/ @media screen and (max-width:380px){.CEgMp .ref-selector-button-text-container{max-width:80px;}}/*!sc*/ @media screen and (max-width:320px){.CEgMp{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}.CEgMp .overview-ref-selector{width:100%;}.CEgMp .overview-ref-selector > span{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-pack:start;-webkit-justify-content:flex-start;-ms-flex-pack:start;justify-content:flex-start;}.CEgMp .overview-ref-selector > span > span[data-component="text"]{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}}/*!sc*/ .gMOVLe[data-size="medium"]{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:0;}/*!sc*/ .gMOVLe[data-size="medium"] svg{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .gMOVLe[data-size="medium"] > span{width:inherit;}/*!sc*/ .gUkoLg{-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;}/*!sc*/ .bZBlpz{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;width:100%;}/*!sc*/ .lhTYNA{margin-right:4px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .ffLUq{font-size:14px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}/*!sc*/ .bmcJak{min-width:0;}/*!sc*/ .fLXEGX{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (max-width:1079px){.fLXEGX{display:none;}}/*!sc*/ .lmSMZJ[data-size="medium"]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));padding-left:4px;padding-right:4px;}/*!sc*/ .lmSMZJ[data-size="medium"] span[data-component="leadingVisual"]{margin-right:4px !important;}/*!sc*/ .dqfxud{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (min-width:1080px){.dqfxud{display:none;}}/*!sc*/ @media screen and (max-width:543px){.dqfxud{display:none;}}/*!sc*/ .fGwBZA[data-size="medium"][data-no-visuals]{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));}/*!sc*/ .jxTzTd{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;padding-left:8px;gap:8px;}/*!sc*/ .gqqBXN{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;gap:8px;}/*!sc*/ @media screen and (max-width:543px){.gqqBXN{display:none;}}/*!sc*/ .dzXgxt{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (max-width:1011px){.dzXgxt{display:none;}}/*!sc*/ .iWFGlI{margin-left:8px;margin-right:8px;margin:0;}/*!sc*/ .vcvyP{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;min-width:160px;}/*!sc*/ .YUPas{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (min-width:1012px){.YUPas{display:none;}}/*!sc*/ .izFOf{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}/*!sc*/ @media screen and (min-width:544px){.izFOf{display:none;}}/*!sc*/ .vIPPs{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;gap:16px;}/*!sc*/ .fdROMU{width:100%;border-collapse:separate;border-spacing:0;border:1px solid;border-color:var(--borderColor-default,var(--color-border-default,#d0d7de));border-radius:6px;table-layout:fixed;overflow:unset;}/*!sc*/ .jGKpsv{height:0px;line-height:0px;}/*!sc*/ .jGKpsv tr{height:0px;font-size:0px;}/*!sc*/ .jdgHnn{padding:16px;color:var(--fgColor-muted,var(--color-fg-muted,#656d76));font-size:12px;text-align:left;height:40px;}/*!sc*/ .jdgHnn th{padding-left:16px;background-color:var(--bgColor-muted,var(--color-canvas-subtle,#f6f8fa));}/*!sc*/ .bQivRW{width:100%;border-top-left-radius:6px;}/*!sc*/ @media screen and (min-width:544px){.bQivRW{display:none;}}/*!sc*/ .ldkMIO{width:40%;border-top-left-radius:6px;}/*!sc*/ @media screen and (max-width:543px){.ldkMIO{display:none;}}/*!sc*/ .jMbWeI{text-align:right;padding-right:16px;width:136px;border-top-right-radius:6px;}/*!sc*/ .gpqjiB{color:var(--fgColor-muted,var(--color-fg-muted,#656d76));font-size:12px;height:40px;}/*!sc*/ .dzCJzi{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:row;-ms-flex-direction:row;flex-direction:row;-webkit-flex-wrap:wrap;-ms-flex-wrap:wrap;flex-wrap:wrap;-webkit-box-pack:justify;-webkit-justify-content:space-between;-ms-flex-pack:justify;justify-content:space-between;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;gap:8px;min-width:273px;padding:8px;}/*!sc*/ @media screen and (min-width:544px){.dzCJzi{-webkit-flex-wrap:nowrap;-ms-flex-wrap:nowrap;flex-wrap:nowrap;}}/*!sc*/ .eNCcrz{text-align:center;vertical-align:center;height:40px;border-top:1px solid;border-color:var(--borderColor-default,var(--color-border-default,#d0d7de));}/*!sc*/ .bHTcCe{border-top:1px solid var(--borderColor-default,var(--color-border-default));cursor:pointer;}/*!sc*/ .csrIcr{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;gap:16px;}/*!sc*/ .bUQNHB{border:1px solid;border-color:var(--borderColor-default,var(--color-border-default,#d0d7de));border-radius:6px;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;}/*!sc*/ @media screen and (max-width:543px){.bUQNHB{margin-left:-16px;margin-right:-16px;max-width:calc(100% + 32px);}}/*!sc*/ @media screen and (min-width:544px){.bUQNHB{max-width:100%;}}/*!sc*/ .jPdcfu{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;border-bottom:1px solid;border-bottom-color:var(--borderColor-default,var(--color-border-default,#d0d7de));-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;padding-right:8px;position:-webkit-sticky;position:sticky;top:0;background-color:var(--bgColor-default,var(--color-canvas-default,#ffffff));z-index:1;border-top-left-radius:6px;border-top-right-radius:6px;}/*!sc*/ .iphEWz{-webkit-box-flex:1;-webkit-flex-grow:1;-ms-flex-positive:1;flex-grow:1;border-bottom:none;max-width:100%;padding-left:8px;padding-right:8px;}/*!sc*/ .hUCRAk{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-flex-direction:column;-ms-flex-direction:column;flex-direction:column;-webkit-align-items:center;-webkit-box-align:center;-ms-flex-align:center;align-items:center;}/*!sc*/ .cwoBXV[data-size="medium"]{color:var(--fgColor-muted,var(--color-fg-subtle,#6e7781));padding-left:8px;padding-right:8px;}/*!sc*/ .QkQOb{padding:32px;overflow:auto;}/*!sc*/ data-styled.g1[id="Box-sc-g0xbh4-0"]{content:"iVEunk,jzuOtQ,bGojzy,iNSVHo,bVgnfw,CEgMp,gMOVLe,gUkoLg,bZBlpz,lhTYNA,ffLUq,bmcJak,fLXEGX,lmSMZJ,dqfxud,fGwBZA,jxTzTd,gqqBXN,dzXgxt,iWFGlI,vcvyP,YUPas,izFOf,vIPPs,fdROMU,jGKpsv,jdgHnn,bQivRW,ldkMIO,jMbWeI,gpqjiB,dzCJzi,eNCcrz,bHTcCe,csrIcr,bUQNHB,jPdcfu,iphEWz,hUCRAk,cwoBXV,QkQOb,"}/*!sc*/ .brGdpi{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;-webkit-clip:rect(0,0,0,0);clip:rect(0,0,0,0);white-space:nowrap;border-width:0;}/*!sc*/ data-styled.g5[id="_VisuallyHidden__VisuallyHidden-sc-11jhm7a-0"]{content:"brGdpi,"}/*!sc*/ .hWlpPn{position:relative;display:inline-block;}/*!sc*/ .hWlpPn::after{position:absolute;z-index:1000000;display:none;padding:0.5em 0.75em;font:normal normal 11px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji";-webkit-font-smoothing:subpixel-antialiased;color:var(--tooltip-fgColor,var(--fgColor-onEmphasis,var(--color-fg-on-emphasis,#ffffff)));text-align:center;-webkit-text-decoration:none;text-decoration:none;text-shadow:none;text-transform:none;-webkit-letter-spacing:normal;-moz-letter-spacing:normal;-ms-letter-spacing:normal;letter-spacing:normal;word-wrap:break-word;white-space:pre;pointer-events:none;content:attr(aria-label);background:var(--tooltip-bgColor,var(--bgColor-emphasis,var(--color-neutral-emphasis-plus,#24292f)));border-radius:6px;opacity:0;}/*!sc*/ @-webkit-keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ @keyframes tooltip-appear{from{opacity:0;}to{opacity:1;}}/*!sc*/ .hWlpPn:hover::after,.hWlpPn:active::after,.hWlpPn:focus::after,.hWlpPn:focus-within::after{display:inline-block;-webkit-text-decoration:none;text-decoration:none;-webkit-animation-name:tooltip-appear;animation-name:tooltip-appear;-webkit-animation-duration:0.1s;animation-duration:0.1s;-webkit-animation-fill-mode:forwards;animation-fill-mode:forwards;-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .hWlpPn.tooltipped-no-delay:hover::after,.hWlpPn.tooltipped-no-delay:active::after,.hWlpPn.tooltipped-no-delay:focus::after,.hWlpPn.tooltipped-no-delay:focus-within::after{-webkit-animation-delay:0s;animation-delay:0s;}/*!sc*/ .hWlpPn.tooltipped-multiline:hover::after,.hWlpPn.tooltipped-multiline:active::after,.hWlpPn.tooltipped-multiline:focus::after,.hWlpPn.tooltipped-multiline:focus-within::after{display:table-cell;}/*!sc*/ .hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-se::after,.hWlpPn.tooltipped-sw::after{top:100%;right:50%;margin-top:6px;}/*!sc*/ .hWlpPn.tooltipped-se::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .hWlpPn.tooltipped-sw::after{margin-right:-16px;}/*!sc*/ .hWlpPn.tooltipped-n::after,.hWlpPn.tooltipped-ne::after,.hWlpPn.tooltipped-nw::after{right:50%;bottom:100%;margin-bottom:6px;}/*!sc*/ .hWlpPn.tooltipped-ne::after{right:auto;left:50%;margin-left:-16px;}/*!sc*/ .hWlpPn.tooltipped-nw::after{margin-right:-16px;}/*!sc*/ .hWlpPn.tooltipped-s::after,.hWlpPn.tooltipped-n::after{-webkit-transform:translateX(50%);-ms-transform:translateX(50%);transform:translateX(50%);}/*!sc*/ .hWlpPn.tooltipped-w::after{right:100%;bottom:50%;margin-right:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .hWlpPn.tooltipped-e::after{bottom:50%;left:100%;margin-left:6px;-webkit-transform:translateY(50%);-ms-transform:translateY(50%);transform:translateY(50%);}/*!sc*/ .hWlpPn.tooltipped-multiline::after{width:-webkit-max-content;width:-moz-max-content;width:max-content;max-width:250px;word-wrap:break-word;white-space:pre-line;border-collapse:separate;}/*!sc*/ .hWlpPn.tooltipped-multiline.tooltipped-s::after,.hWlpPn.tooltipped-multiline.tooltipped-n::after{right:auto;left:50%;-webkit-transform:translateX(-50%);-ms-transform:translateX(-50%);transform:translateX(-50%);}/*!sc*/ .hWlpPn.tooltipped-multiline.tooltipped-w::after,.hWlpPn.tooltipped-multiline.tooltipped-e::after{right:100%;}/*!sc*/ .hWlpPn.tooltipped-align-right-2::after{right:0;margin-right:0;}/*!sc*/ .hWlpPn.tooltipped-align-left-2::after{left:0;margin-left:0;}/*!sc*/ data-styled.g16[id="Tooltip__TooltipBase-sc-17tf59c-0"]{content:"hWlpPn,"}/*!sc*/ .liVpTx{display:inline-block;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap;max-width:125px;}/*!sc*/ data-styled.g18[id="Truncate__StyledTruncate-sc-23o1d2-0"]{content:"liVpTx,"}/*!sc*/ </style> <!-- --> <!-- --> <div class="Box-sc-g0xbh4-0 iVEunk"><div class="Box-sc-g0xbh4-0 jzuOtQ"><div class="Box-sc-g0xbh4-0 bGojzy"></div></div><div class="Box-sc-g0xbh4-0 iNSVHo"><div class="Box-sc-g0xbh4-0 bVgnfw"><div class="Box-sc-g0xbh4-0 CEgMp"><button type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" aria-label="3.x branch" data-testid="anchor-button" class="Box-sc-g0xbh4-0 gMOVLe prc-Button-ButtonBase-c50BI overview-ref-selector width-full" data-loading="false" data-size="medium" data-variant="default" aria-describedby="branch-picker-repos-header-ref-selector-loading-announcement" id="branch-picker-repos-header-ref-selector"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x"><div class="Box-sc-g0xbh4-0 bZBlpz"><div class="Box-sc-g0xbh4-0 lhTYNA"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></div><div class="Box-sc-g0xbh4-0 ffLUq ref-selector-button-text-container"><span class="Box-sc-g0xbh4-0 bmcJak prc-Text-Text-0ima0"> <!-- -->3.x</span></div></div></span><span data-component="trailingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><button hidden="" data-hotkey-scope="read-only-cursor-text-area"></button></div><div class="Box-sc-g0xbh4-0 fLXEGX"><a style="--button-color:fg.muted" type="button" href="/aimeos/map/branches" class="Box-sc-g0xbh4-0 lmSMZJ prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="invisible" aria-describedby=":Rclab:-loading-announcement"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x">Branches</span></span></a><a style="--button-color:fg.muted" type="button" href="/aimeos/map/tags" class="Box-sc-g0xbh4-0 lmSMZJ prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="invisible" aria-describedby=":Rklab:-loading-announcement"><span data-component="buttonContent" class="Box-sc-g0xbh4-0 gUkoLg prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-tag" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x">Tags</span></span></a></div><div class="Box-sc-g0xbh4-0 dqfxud"><a style="--button-color:fg.muted" type="button" aria-label="Go to Branches page" href="/aimeos/map/branches" class="Box-sc-g0xbh4-0 fGwBZA prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible" aria-describedby=":Relab:-loading-announcement"><svg aria-hidden="true" focusable="false" class="octicon octicon-git-branch" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M9.5 3.25a2.25 2.25 0 1 1 3 2.122V6A2.5 2.5 0 0 1 10 8.5H6a1 1 0 0 0-1 1v1.128a2.251 2.251 0 1 1-1.5 0V5.372a2.25 2.25 0 1 1 1.5 0v1.836A2.493 2.493 0 0 1 6 7h4a1 1 0 0 0 1-1v-.628A2.25 2.25 0 0 1 9.5 3.25Zm-6 0a.75.75 0 1 0 1.5 0 .75.75 0 0 0-1.5 0Zm8.25-.75a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5ZM4.25 12a.75.75 0 1 0 0 1.5.75.75 0 0 0 0-1.5Z"></path></svg></a><a style="--button-color:fg.muted" type="button" aria-label="Go to Tags page" href="/aimeos/map/tags" class="Box-sc-g0xbh4-0 fGwBZA prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="invisible" aria-describedby=":Rmlab:-loading-announcement"><svg aria-hidden="true" focusable="false" class="octicon octicon-tag" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path></svg></a></div></div><div class="Box-sc-g0xbh4-0 jxTzTd"><div class="Box-sc-g0xbh4-0 gqqBXN"><div class="Box-sc-g0xbh4-0 dzXgxt"><!--$--><div class="Box-sc-g0xbh4-0 iWFGlI"><span class="Box-sc-g0xbh4-0 vcvyP TextInput-wrapper prc-components-TextInputWrapper-i1ofR prc-components-TextInputBaseWrapper-ueK9q" data-leading-visual="true" data-trailing-visual="true" aria-busy="false"><span class="TextInput-icon" id=":R2j5ab:" aria-hidden="true"><svg aria-hidden="true" focusable="false" class="octicon octicon-search" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M10.68 11.74a6 6 0 0 1-7.922-8.982 6 6 0 0 1 8.982 7.922l3.04 3.04a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215ZM11.5 7a4.499 4.499 0 1 0-8.997 0A4.499 4.499 0 0 0 11.5 7Z"></path></svg></span><input type="text" aria-label="Go to file" role="combobox" aria-controls="file-results-list" aria-expanded="false" aria-haspopup="dialog" autoCorrect="off" spellcheck="false" placeholder="Go to file" aria-describedby=":R2j5ab: :R2j5abH1:" data-component="input" class="prc-components-Input-Ic-y8" value=""/><span class="TextInput-icon" id=":R2j5abH1:" aria-hidden="true"></span></span></div><!--/$--></div><div class="Box-sc-g0xbh4-0 YUPas"><button type="button" class="prc-Button-ButtonBase-c50BI" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":Rr5ab:-loading-announcement"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="text" class="prc-Button-Label-pTQ3x">Go to file</span></span></button></div><div class="react-directory-add-file-icon"></div><div class="react-directory-remove-file-icon"></div></div><button type="button" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="primary" aria-describedby=":R55ab:-loading-announcement" id=":R55ab:"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-code hide-sm" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m11.28 3.22 4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.749.749 0 0 1-1.275-.326.749.749 0 0 1 .215-.734L13.94 8l-3.72-3.72a.749.749 0 0 1 .326-1.275.749.749 0 0 1 .734.215Zm-6.56 0a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042L2.06 8l3.72 3.72a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L.47 8.53a.75.75 0 0 1 0-1.06Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x">Code</span><span data-component="trailingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-triangle-down" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m4.427 7.427 3.396 3.396a.25.25 0 0 0 .354 0l3.396-3.396A.25.25 0 0 0 11.396 7H4.604a.25.25 0 0 0-.177.427Z"></path></svg></span></span></button><div class="Box-sc-g0xbh4-0 izFOf"><button data-component="IconButton" type="button" aria-label="Open more actions menu" aria-haspopup="true" aria-expanded="false" tabindex="0" class="prc-Button-ButtonBase-c50BI prc-Button-IconButton-szpyj" data-loading="false" data-no-visuals="true" data-size="medium" data-variant="default" aria-describedby=":R75ab:-loading-announcement" id=":R75ab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-kebab-horizontal" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg></button></div></div></div><div class="Box-sc-g0xbh4-0 vIPPs"><div data-hpc="true"><button hidden="" data-testid="focus-next-element-button" data-hotkey="j"></button><button hidden="" data-testid="focus-previous-element-button" data-hotkey="k"></button><h2 class="sr-only ScreenReaderHeading-module__userSelectNone--vW4Cq prc-Heading-Heading-6CmGO" data-testid="screen-reader-heading" id="folders-and-files">Folders and files</h2><table aria-labelledby="folders-and-files" class="Box-sc-g0xbh4-0 fdROMU"><thead class="Box-sc-g0xbh4-0 jGKpsv"><tr class="Box-sc-g0xbh4-0 jdgHnn"><th colSpan="2" class="Box-sc-g0xbh4-0 bQivRW"><span class="text-bold">Name</span></th><th colSpan="1" class="Box-sc-g0xbh4-0 ldkMIO"><span class="text-bold">Name</span></th><th class="hide-sm"><div title="Last commit message" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx width-fit"><span class="text-bold">Last commit message</span></div></th><th colSpan="1" class="Box-sc-g0xbh4-0 jMbWeI"><div title="Last commit date" class="Truncate__StyledTruncate-sc-23o1d2-0 liVpTx width-fit"><span class="text-bold">Last commit date</span></div></th></tr></thead><tbody><tr class="Box-sc-g0xbh4-0 gpqjiB"><td colSpan="3" class="bgColor-muted p-1 rounded-top-2"><div class="Box-sc-g0xbh4-0 dzCJzi"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone--vW4Cq prc-Heading-Heading-6CmGO" data-testid="screen-reader-heading">Latest commit</h2><div style="width:120px" class="Skeleton Skeleton--text" data-testid="loading"> </div><div class="d-flex flex-shrink-0 gap-2"><div data-testid="latest-commit-details" class="d-none d-sm-flex flex-items-center"></div><div class="d-flex gap-2"><h2 class="sr-only ScreenReaderHeading-module__userSelectNone--vW4Cq prc-Heading-Heading-6CmGO" data-testid="screen-reader-heading">History</h2><a href="/aimeos/map/commits/3.x/" class="prc-Button-ButtonBase-c50BI d-none d-lg-flex LinkButton-module__code-view-link-button--xvCGA flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible" aria-describedby=":Raqj8pab:-loading-announcement"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span><span data-component="text" class="prc-Button-Label-pTQ3x"><span class="fgColor-default">495 Commits</span></span></span></a><div class="d-sm-none"></div><div class="d-flex d-lg-none"><span role="tooltip" aria-label="495 Commits" id="history-icon-button-tooltip" class="Tooltip__TooltipBase-sc-17tf59c-0 hWlpPn tooltipped-n"><a href="/aimeos/map/commits/3.x/" class="prc-Button-ButtonBase-c50BI LinkButton-module__code-view-link-button--xvCGA flex-items-center fgColor-default" data-loading="false" data-size="small" data-variant="invisible" aria-describedby=":R1iqj8pab:-loading-announcement history-icon-button-tooltip"><span data-component="buttonContent" data-align="center" class="prc-Button-ButtonContent-HKbr-"><span data-component="leadingVisual" class="prc-Button-Visual-2epfX prc-Button-VisualWrap-Db-eB"><svg aria-hidden="true" focusable="false" class="octicon octicon-history" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="m.427 1.927 1.215 1.215a8.002 8.002 0 1 1-1.6 5.685.75.75 0 1 1 1.493-.154 6.5 6.5 0 1 0 1.18-4.458l1.358 1.358A.25.25 0 0 1 3.896 6H.25A.25.25 0 0 1 0 5.75V2.104a.25.25 0 0 1 .427-.177ZM7.75 4a.75.75 0 0 1 .75.75v2.992l2.028.812a.75.75 0 0 1-.557 1.392l-2.5-1A.751.751 0 0 1 7 8.25v-3.5A.75.75 0 0 1 7.75 4Z"></path></svg></span></span></a></span></div></div></div></div></td></tr><tr class="react-directory-row undefined" id="folder-row-0"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="This path skips through empty directories" aria-label=".github/workflows, (Directory)" class="Link--primary" href="/aimeos/map/tree/3.x/.github/workflows"><span class="react-directory-default-color" data-testid="path-name-segment">.github/</span><span class="" data-testid="path-name-segment">workflows</span></a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="This path skips through empty directories" aria-label=".github/workflows, (Directory)" class="Link--primary" href="/aimeos/map/tree/3.x/.github/workflows"><span class="react-directory-default-color" data-testid="path-name-segment">.github/</span><span class="" data-testid="path-name-segment">workflows</span></a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-1"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="_layouts" aria-label="_layouts, (Directory)" class="Link--primary" href="/aimeos/map/tree/3.x/_layouts">_layouts</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="_layouts" aria-label="_layouts, (Directory)" class="Link--primary" href="/aimeos/map/tree/3.x/_layouts">_layouts</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-2"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="assets" aria-label="assets, (Directory)" class="Link--primary" href="/aimeos/map/tree/3.x/assets">assets</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="assets" aria-label="assets, (Directory)" class="Link--primary" href="/aimeos/map/tree/3.x/assets">assets</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-3"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="src" aria-label="src, (Directory)" class="Link--primary" href="/aimeos/map/tree/3.x/src">src</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="src" aria-label="src, (Directory)" class="Link--primary" href="/aimeos/map/tree/3.x/src">src</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-4"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="tests" aria-label="tests, (Directory)" class="Link--primary" href="/aimeos/map/tree/3.x/tests">tests</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file-directory-fill icon-directory" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M1.75 1A1.75 1.75 0 0 0 0 2.75v10.5C0 14.216.784 15 1.75 15h12.5A1.75 1.75 0 0 0 16 13.25v-8.5A1.75 1.75 0 0 0 14.25 3H7.5a.25.25 0 0 1-.2-.1l-.9-1.2C6.07 1.26 5.55 1 5 1H1.75Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="tests" aria-label="tests, (Directory)" class="Link--primary" href="/aimeos/map/tree/3.x/tests">tests</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-5"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".gitignore" aria-label=".gitignore, (File)" class="Link--primary" href="/aimeos/map/blob/3.x/.gitignore">.gitignore</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title=".gitignore" aria-label=".gitignore, (File)" class="Link--primary" href="/aimeos/map/blob/3.x/.gitignore">.gitignore</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-6"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="CNAME" aria-label="CNAME, (File)" class="Link--primary" href="/aimeos/map/blob/3.x/CNAME">CNAME</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="CNAME" aria-label="CNAME, (File)" class="Link--primary" href="/aimeos/map/blob/3.x/CNAME">CNAME</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-7"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="LICENSE" aria-label="LICENSE, (File)" class="Link--primary" href="/aimeos/map/blob/3.x/LICENSE">LICENSE</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="LICENSE" aria-label="LICENSE, (File)" class="Link--primary" href="/aimeos/map/blob/3.x/LICENSE">LICENSE</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-8"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="README.md" aria-label="README.md, (File)" class="Link--primary" href="/aimeos/map/blob/3.x/README.md">README.md</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="README.md" aria-label="README.md, (File)" class="Link--primary" href="/aimeos/map/blob/3.x/README.md">README.md</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row undefined" id="folder-row-9"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="_config.yml" aria-label="_config.yml, (File)" class="Link--primary" href="/aimeos/map/blob/3.x/_config.yml">_config.yml</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="_config.yml" aria-label="_config.yml, (File)" class="Link--primary" href="/aimeos/map/blob/3.x/_config.yml">_config.yml</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-10"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="composer.json" aria-label="composer.json, (File)" class="Link--primary" href="/aimeos/map/blob/3.x/composer.json">composer.json</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="composer.json" aria-label="composer.json, (File)" class="Link--primary" href="/aimeos/map/blob/3.x/composer.json">composer.json</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="react-directory-row truncate-for-mobile" id="folder-row-11"><td class="react-directory-row-name-cell-small-screen" colSpan="2"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="phpunit.xml" aria-label="phpunit.xml, (File)" class="Link--primary" href="/aimeos/map/blob/3.x/phpunit.xml">phpunit.xml</a></div></div></div></div></td><td class="react-directory-row-name-cell-large-screen" colSpan="1"><div class="react-directory-filename-column"><svg aria-hidden="true" focusable="false" class="octicon octicon-file color-fg-muted" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M2 1.75C2 .784 2.784 0 3.75 0h6.586c.464 0 .909.184 1.237.513l2.914 2.914c.329.328.513.773.513 1.237v9.586A1.75 1.75 0 0 1 13.25 16h-9.5A1.75 1.75 0 0 1 2 14.25Zm1.75-.25a.25.25 0 0 0-.25.25v12.5c0 .138.112.25.25.25h9.5a.25.25 0 0 0 .25-.25V6h-2.75A1.75 1.75 0 0 1 9 4.25V1.5Zm6.75.062V4.25c0 .138.112.25.25.25h2.688l-.011-.013-2.914-2.914-.013-.011Z"></path></svg><div class="overflow-hidden"><div class="react-directory-filename-cell"><div class="react-directory-truncate"><a title="phpunit.xml" aria-label="phpunit.xml, (File)" class="Link--primary" href="/aimeos/map/blob/3.x/phpunit.xml">phpunit.xml</a></div></div></div></div></td><td class="react-directory-row-commit-cell"><div class="Skeleton Skeleton--text"> </div></td><td><div class="Skeleton Skeleton--text"> </div></td></tr><tr class="Box-sc-g0xbh4-0 eNCcrz show-for-mobile" data-testid="view-all-files-row"><td colSpan="3" class="Box-sc-g0xbh4-0 bHTcCe"><div><button class="prc-Link-Link-85e08">View all files</button></div></td></tr></tbody></table></div><div class="Box-sc-g0xbh4-0 csrIcr"><div class="Box-sc-g0xbh4-0 bUQNHB"><div itemscope="" itemType="https://schema.org/abstract" class="Box-sc-g0xbh4-0 jPdcfu"><h2 class="_VisuallyHidden__VisuallyHidden-sc-11jhm7a-0 brGdpi">Repository files navigation</h2><nav class="Box-sc-g0xbh4-0 iphEWz prc-components-UnderlineWrapper-oOh5J" aria-label="Repository files"><ul class="prc-components-UnderlineItemList-b23Hf" role="list"><li class="Box-sc-g0xbh4-0 hUCRAk"><a class="prc-components-UnderlineItem-lJsg-" href="#" aria-current="page"><span data-component="icon"><svg aria-hidden="true" focusable="false" class="octicon octicon-book" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path></svg></span><span data-component="text" data-content="README">README</span></a></li><li class="Box-sc-g0xbh4-0 hUCRAk"><a class="prc-components-UnderlineItem-lJsg-" href="#"><span data-component="icon"><svg aria-hidden="true" focusable="false" class="octicon octicon-law" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z"></path></svg></span><span data-component="text" data-content="MIT license">MIT license</span></a></li></ul></nav><button style="--button-color:fg.subtle" type="button" aria-label="Outline" aria-haspopup="true" aria-expanded="false" tabindex="0" class="Box-sc-g0xbh4-0 cwoBXV prc-Button-ButtonBase-c50BI" data-loading="false" data-size="medium" data-variant="invisible" aria-describedby=":Rr9ab:-loading-announcement" id=":Rr9ab:"><svg aria-hidden="true" focusable="false" class="octicon octicon-list-unordered" viewBox="0 0 16 16" width="16" height="16" fill="currentColor" display="inline-block" overflow="visible" style="vertical-align:text-bottom"><path d="M5.75 2.5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5Zm0 5h8.5a.75.75 0 0 1 0 1.5h-8.5a.75.75 0 0 1 0-1.5ZM2 14a1 1 0 1 1 0-2 1 1 0 0 1 0 2Zm1-6a1 1 0 1 1-2 0 1 1 0 0 1 2 0ZM2 4a1 1 0 1 1 0-2 1 1 0 0 1 0 2Z"></path></svg></button></div><div class="Box-sc-g0xbh4-0 QkQOb js-snippet-clipboard-copy-unpositioned undefined" data-hpc="true"><article class="markdown-body entry-content container-lg" itemprop="text"><p dir="auto"><a href="https://github.com/aimeos/map/actions"><img src="https://github.com/aimeos/map/actions/workflows/php.yml/badge.svg" alt="Build Status" height="20" style="max-width: 100%;"></a> <a href="https://coveralls.io/github/aimeos/map" rel="nofollow"><img src="https://camo.githubusercontent.com/0bd7d25e03645c91e5038330cc54b93c2792ed933392484cba155ea4331b3dac/68747470733a2f2f636f766572616c6c732e696f2f7265706f732f6769746875622f61696d656f732f6d61702f62616467652e737667" alt="Coverage Status" height="20" data-canonical-src="https://coveralls.io/repos/github/aimeos/map/badge.svg" style="max-width: 100%;"></a> <a href="https://packagist.org/packages/aimeos/map" rel="nofollow"><img src="https://camo.githubusercontent.com/cfe578df661df520f2816b372189620c4d5242cddfc1312c97beea990dfaa637/68747470733a2f2f706f7365722e707567782e6f72672f61696d656f732f6d61702f6c6963656e73652e737667" alt="License" height="20" data-canonical-src="https://poser.pugx.org/aimeos/map/license.svg" style="max-width: 100%;"></a> <a href="https://packagist.org/packages/aimeos/map" rel="nofollow"><img src="https://camo.githubusercontent.com/90895f67fc6c8576f2791057e7b8c398b5ef5868f21c82c983ad442be1cc963b/68747470733a2f2f706f7365722e707567782e6f72672f61696d656f732f6d61702f762f737461626c65" alt="Latest Stable Version" height="20" data-canonical-src="https://poser.pugx.org/aimeos/map/v/stable" style="max-width: 100%;"></a> <a href="https://packagist.org/packages/aimeos/map" rel="nofollow"><img src="https://camo.githubusercontent.com/bef9c9f6fd47517903f7091e0220d7ddf617a05f4a805315803c3bfaa2807bab/68747470733a2f2f62616467656e2e6e65742f6769746875622f73746172732f61696d656f732f6d6170" alt="Stars" height="20" data-canonical-src="https://badgen.net/github/stars/aimeos/map" style="max-width: 100%;"></a> <a href="https://packagist.org/packages/aimeos/map" rel="nofollow"><img src="https://camo.githubusercontent.com/59f33971ccb7383a48e8c5475e61a419f7b45170eb34624822d22ec06396a8c3/68747470733a2f2f706f7365722e707567782e6f72672f61696d656f732f6d61702f646f776e6c6f616473" alt="Downloads" height="20" data-canonical-src="https://poser.pugx.org/aimeos/map/downloads" style="max-width: 100%;"></a></p> <div class="markdown-heading" dir="auto"><h1 tabindex="-1" class="heading-element" dir="auto">PHP arrays and collections made easy</h1><a id="user-content-php-arrays-and-collections-made-easy" class="anchor" aria-label="Permalink: PHP arrays and collections made easy" href="#php-arrays-and-collections-made-easy"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Easy and elegant handling of PHP arrays by using an array-like collection object as offered by jQuery and Laravel Collections.</p> <div class="highlight highlight-source-shell notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="composer req aimeos/map"><pre>composer req aimeos/map</pre></div> <p dir="auto">Supported PHP versions:</p> <ul dir="auto"> <li>PHP 7.1+</li> <li>PHP 8+</li> </ul> <p dir="auto"><strong>Table of contents</strong></p> <ul dir="auto"> <li><a href="#why-php-map">Why PHP Map</a></li> <li><a href="#methods">List of methods</a> <ul dir="auto"> <li><a href="#create">Create</a></li> <li><a href="#access">Access</a></li> <li><a href="#add">Add</a></li> <li><a href="#aggregate">Aggregate</a></li> <li><a href="#debug">Debug</a></li> <li><a href="#order-by">Order</a></li> <li><a href="#shorten">Shorten</a></li> <li><a href="#test">Test</a></li> <li><a href="#mutate">Mutate</a></li> <li><a href="#misc">Misc</a></li> </ul> </li> <li><a href="#method-documentation">Documentation</a></li> <li><a href="#custom-methods">Custom methods</a></li> <li><a href="#performance">Performance</a></li> <li><a href="#upgrade-guide">Upgrade guide</a></li> </ul> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Why PHP Map</h2><a id="user-content-why-php-map" class="anchor" aria-label="Permalink: Why PHP Map" href="#why-php-map"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto"><strong>Instead of:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$list = [['id' =&gt; 'one', 'value' =&gt; 'value1'], ['id' =&gt; 'two', 'value' =&gt; 'value2'], null]; $list[] = ['id' =&gt; 'three', 'value' =&gt; 'value3']; // add element unset( $list[0] ); // remove element $list = array_filter( $list ); // remove empty values sort( $list ); // sort elements $pairs = array_column( $list, 'value', 'id' ); // create ['three' =&gt; 'value3'] $value = reset( $pairs ) ?: null; // return first value"><pre><span class="pl-s1"><span class="pl-c1">$</span>list</span> = [[<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">one</span>'</span>, <span class="pl-s">'<span class="pl-s">value</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">value1</span>'</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">two</span>'</span>, <span class="pl-s">'<span class="pl-s">value</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">value2</span>'</span>], <span class="pl-c1">null</span>]; <span class="pl-s1"><span class="pl-c1">$</span>list</span>[] = [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">three</span>'</span>, <span class="pl-s">'<span class="pl-s">value</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">value3</span>'</span>]; <span class="pl-c">// add element</span> unset( <span class="pl-s1"><span class="pl-c1">$</span>list</span>[<span class="pl-c1">0</span>] ); <span class="pl-c">// remove element</span> <span class="pl-s1"><span class="pl-c1">$</span>list</span> = <span class="pl-en">array_filter</span>( <span class="pl-s1"><span class="pl-c1">$</span>list</span> ); <span class="pl-c">// remove empty values</span> <span class="pl-en">sort</span>( <span class="pl-s1"><span class="pl-c1">$</span>list</span> ); <span class="pl-c">// sort elements</span> <span class="pl-s1"><span class="pl-c1">$</span>pairs</span> = <span class="pl-en">array_column</span>( <span class="pl-s1"><span class="pl-c1">$</span>list</span>, <span class="pl-s">'<span class="pl-s">value</span>'</span>, <span class="pl-s">'<span class="pl-s">id</span>'</span> ); <span class="pl-c">// create ['three' =&gt; 'value3']</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> = <span class="pl-en">reset</span>( <span class="pl-s1"><span class="pl-c1">$</span>pairs</span> ) ?: <span class="pl-c1">null</span>; <span class="pl-c">// return first value</span></pre></div> <p dir="auto"><strong>Only use:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$list = [['id' =&gt; 'one', 'value' =&gt; 'value1'], ['id' =&gt; 'two', 'value' =&gt; 'value2'], null]; $value = map( $list ) // create Map -&gt;push( ['id' =&gt; 'three', 'value' =&gt; 'value3'] ) // add element -&gt;remove( 0 ) // remove element -&gt;filter() // remove empty values -&gt;sort() // sort elements -&gt;col( 'value', 'id' ) // create ['three' =&gt; 'value3'] -&gt;first(); // return first value"><pre><span class="pl-s1"><span class="pl-c1">$</span>list</span> = [[<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">one</span>'</span>, <span class="pl-s">'<span class="pl-s">value</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">value1</span>'</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">two</span>'</span>, <span class="pl-s">'<span class="pl-s">value</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">value2</span>'</span>], <span class="pl-c1">null</span>]; <span class="pl-s1"><span class="pl-c1">$</span>value</span> = <span class="pl-en">map</span>( <span class="pl-s1"><span class="pl-c1">$</span>list</span> ) <span class="pl-c">// create Map</span> -&gt;<span class="pl-en">push</span>( [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">three</span>'</span>, <span class="pl-s">'<span class="pl-s">value</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">value3</span>'</span>] ) <span class="pl-c">// add element</span> -&gt;<span class="pl-en">remove</span>( <span class="pl-c1">0</span> ) <span class="pl-c">// remove element</span> -&gt;<span class="pl-en">filter</span>() <span class="pl-c">// remove empty values</span> -&gt;<span class="pl-en">sort</span>() <span class="pl-c">// sort elements</span> -&gt;<span class="pl-en">col</span>( <span class="pl-s">'<span class="pl-s">value</span>'</span>, <span class="pl-s">'<span class="pl-s">id</span>'</span> ) <span class="pl-c">// create ['three' =&gt; 'value3']</span> -&gt;<span class="pl-en">first</span>(); <span class="pl-c">// return first value</span></pre></div> <p dir="auto"><strong>You can still use:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$map[] = ['id' =&gt; 'three', 'value' =&gt; 'value3']; $value = $map[0]; count( $map ); foreach( $map as $key =&gt; value );"><pre><span class="pl-s1"><span class="pl-c1">$</span>map</span>[] = [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">three</span>'</span>, <span class="pl-s">'<span class="pl-s">value</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">value3</span>'</span>]; <span class="pl-s1"><span class="pl-c1">$</span>value</span> = <span class="pl-s1"><span class="pl-c1">$</span>map</span>[<span class="pl-c1">0</span>]; <span class="pl-en">count</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span> ); <span class="pl-k">foreach</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span> <span class="pl-k">as</span> <span class="pl-s1"><span class="pl-c1">$</span>key</span> =&gt; value );</pre></div> <p dir="auto"><strong>Use callbacks:</strong></p> <p dir="auto">Also, the map object allows you to pass anonymous functions to a lot of methods, e.g.:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$map-&gt;each( function( $val, $key ) { echo $key . ': ' . $val; } );"><pre><span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">each</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">echo</span> <span class="pl-s1"><span class="pl-c1">$</span>key</span> . <span class="pl-s">'<span class="pl-s">: </span>'</span> . <span class="pl-s1"><span class="pl-c1">$</span>val</span>; } );</pre></div> <p dir="auto"><strong>jQuery style:</strong></p> <p dir="auto">If your map elements are objects, you can call their methods for each object and get the result as new map just like in jQuery:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="// MyClass implements setStatus() (returning $this) and getCode() (initialized by constructor) $map = Map::from( ['a' =&gt; new MyClass( 'x' ), 'b' =&gt; new MyClass( 'y' )] ); $map-&gt;setStatus( 1 )-&gt;getCode()-&gt;toArray();"><pre><span class="pl-c">// MyClass implements setStatus() (returning $this) and getCode() (initialized by constructor)</span> <span class="pl-s1"><span class="pl-c1">$</span>map</span> = Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-k">new</span> <span class="pl-v">MyClass</span>( <span class="pl-s">'<span class="pl-s">x</span>'</span> ), <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-k">new</span> <span class="pl-v">MyClass</span>( <span class="pl-s">'<span class="pl-s">y</span>'</span> )] ); <span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">setStatus</span>( <span class="pl-c1">1</span> )-&gt;<span class="pl-en">getCode</span>()-&gt;<span class="pl-en">toArray</span>();</pre></div> <p dir="auto">This will call <code>setStatus( 1 )</code> on both objects. If <code>setStatus()</code> implementation returns <code>$this</code>, the new map will also contain:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="['a' =&gt; MyClass(), 'b' =&gt; MyClass()]"><pre>[<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-en">MyClass</span>(), <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-en">MyClass</span>()]</pre></div> <p dir="auto">On those new map elements, <code>getCode()</code> will be called which returns <code>x</code> for the first object and <code>y</code> for the second. The map created from the results of <code>getCode()</code> will return:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="['a' =&gt; 'x', 'b' =&gt; 'y']"><pre>[<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">x</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">y</span>'</span>]</pre></div> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Methods</h2><a id="user-content-methods" class="anchor" aria-label="Permalink: Methods" href="#methods"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto"><a href="#is_map-function">function is_map</a> <a href="#map-function">function map</a> <a href="#__construct">__construct</a> <a href="#__call">__call</a> <a href="#__callstatic">__callStatic</a> <a href="#after">after</a> <a href="#all">all</a> <a href="#any">any</a> <a href="#arsort">arsort</a> <a href="#arsorted">arsorted</a> <a href="#asort">asort</a> <a href="#asorted">asorted</a> <a href="#at">at</a> <a href="#avg">avg</a> <a href="#before">before</a> <a href="#bool">bool</a> <a href="#call">call</a> <a href="#cast">cast</a> <a href="#chunk">chunk</a> <a href="#clear">clear</a> <a href="#clone">clone</a> <a href="#col">col</a> <a href="#collapse">collapse</a> <a href="#combine">combine</a> <a href="#concat">concat</a> <a href="#contains">contains</a> <a href="#copy">copy</a> <a href="#count">count</a> <a href="#countby">countBy</a> <a href="#dd">dd</a> <a href="#delimiter">delimiter</a> <a href="#diff">diff</a> <a href="#diffassoc">diffAssoc</a> <a href="#diffkeys">diffKeys</a> <a href="#dump">dump</a> <a href="#duplicates">duplicates</a> <a href="#each">each</a> <a href="#empty">empty</a> <a href="#equals">equals</a> <a href="#every">every</a> <a href="#except">except</a> <a href="#explode">explode</a> <a href="#fill">fill</a> <a href="#filter">filter</a> <a href="#find">find</a> <a href="#findkey">findKey</a> <a href="#first">first</a> <a href="#firstkey">firstKey</a> <a href="#flat">flat</a> <a href="#flip">flip</a> <a href="#float">float</a> <a href="#from">from</a> <a href="#fromjson">fromJson</a> <a href="#get">get</a> <a href="#getiterator">getIterator</a> <a href="#grep">grep</a> <a href="#groupby">groupBy</a> <a href="#has">has</a> <a href="#if">if</a> <a href="#ifany">ifAny</a> <a href="#ifempty">ifEmpty</a> <a href="#implements">implements</a> <a href="#in">in</a> <a href="#includes">includes</a> <a href="#index">index</a> <a href="#insertafter">insertAfter</a> <a href="#insertat">insertAt</a> <a href="#insertbefore">insertBefore</a> <a href="#int">int</a> <a href="#intersect">intersect</a> <a href="#intersectassoc">intersectAssoc</a> <a href="#intersectkeys">intersectKeys</a> <a href="#is">is</a> <a href="#isempty">isEmpty</a> <a href="#islist">isList</a> <a href="#isobject">isObject</a> <a href="#isnumeric">isNumeric</a> <a href="#isscalar">isScalar</a> <a href="#isstring">isString</a> <a href="#join">join</a> <a href="#jsonserialize">jsonSerialize</a> <a href="#keys">keys</a> <a href="#krsort">krsort</a> <a href="#krsorted">krsorted</a> <a href="#ksort">ksort</a> <a href="#ksorted">ksorted</a> <a href="#last">last</a> <a href="#lastkey">lastKey</a> <a href="#ltrim">ltrim</a> <a href="#map">map</a> <a href="#max">max</a> <a href="#merge">merge</a> <a href="#method">method</a> <a href="#min">min</a> <a href="#none">none</a> <a href="#nth">nth</a> <a href="#offsetexists">offsetExists</a> <a href="#offsetget">offsetGet</a> <a href="#offsetset">offsetSet</a> <a href="#offsetunset">offsetUnset</a> <a href="#only">only</a> <a href="#order">order</a> <a href="#pad">pad</a> <a href="#partition">partition</a> <a href="#percentage">percentage</a> <a href="#pipe">pipe</a> <a href="#pluck">pluck</a> <a href="#pop">pop</a> <a href="#pos">pos</a> <a href="#prefix">prefix</a> <a href="#prepend">prepend</a> <a href="#pull">pull</a> <a href="#push">push</a> <a href="#put">put</a> <a href="#random">random</a> <a href="#reduce">reduce</a> <a href="#reject">reject</a> <a href="#rekey">rekey</a> <a href="#remove">remove</a> <a href="#replace">replace</a> <a href="#reverse">reverse</a> <a href="#reversed">reversed</a> <a href="#rsort">rsort</a> <a href="#rsorted">rsorted</a> <a href="#rtrim">rtrim</a> <a href="#search">search</a> <a href="#sep">sep</a> <a href="#set">set</a> <a href="#shift">shift</a> <a href="#shuffle">shuffle</a> <a href="#shuffled">shuffled</a> <a href="#skip">skip</a> <a href="#slice">slice</a> <a href="#some">some</a> <a href="#sort">sort</a> <a href="#sorted">sorted</a> <a href="#splice">splice</a> <a href="#strafter">strAfter</a> <a href="#strbefore">strBefore</a> <a href="#strcompare">strCompare</a> <a href="#strcontains">strContains</a> <a href="#strcontainsall">strContainsAll</a> <a href="#strends">strEnds</a> <a href="#strendsall">strEndsAll</a> <a href="#string">string</a> <a href="#strlower">strLower</a> <a href="#strreplace">strReplace</a> <a href="#strstarts">strStarts</a> <a href="#strstartsall">strStartsAll</a> <a href="#strupper">strUpper</a> <a href="#suffix">suffix</a> <a href="#sum">sum</a> <a href="#take">take</a> <a href="#tap">tap</a> <a href="#times">times</a> <a href="#to">to</a> <a href="#toarray">toArray</a> <a href="#tojson">toJson</a> <a href="#toreversed">toReversed</a> <a href="#tosorted">toSorted</a> <a href="#tourl">toUrl</a> <a href="#transform">transform</a> <a href="#transpose">transpose</a> <a href="#traverse">traverse</a> <a href="#tree">tree</a> <a href="#trim">trim</a> <a href="#uasort">uasort</a> <a href="#uasorted">uasorted</a> <a href="#uksort">uksort</a> <a href="#uksorted">uksorted</a> <a href="#union">union</a> <a href="#unique">unique</a> <a href="#unshift">unshift</a> <a href="#usort">usort</a> <a href="#usorted">usorted</a> <a href="#values">values</a> <a href="#walk">walk</a> <a href="#where">where</a> <a href="#with">with</a> <a href="#zip">zip</a></p> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Create</h3><a id="user-content-create" class="anchor" aria-label="Permalink: Create" href="#create"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li><a href="#map-function">function map()</a> : Creates a new map from passed elements</li> <li><a href="#__construct">__construct()</a> : Creates a new map</li> <li><a href="#clone">clone()</a> : Clones the map and all objects within</li> <li><a href="#copy">copy()</a> : Creates a new copy</li> <li><a href="#explode">explode()</a> : Splits a string into a map of elements</li> <li><a href="#fill">fill()</a> : Creates a new map filled with given value</li> <li><a href="#from">from()</a> : Creates a new map from passed elements</li> <li><a href="#fromjson">fromJson()</a> : Creates a new map from a JSON string</li> <li><a href="#times">times()</a> : Creates a new map by invoking the closure a number of times</li> <li><a href="#tree">tree()</a> : Creates a tree structure from the list items</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Access</h3><a id="user-content-access" class="anchor" aria-label="Permalink: Access" href="#access"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li><a href="#__call">__call()</a> : Calls a custom method</li> <li><a href="#__callstatic">__callStatic()</a> : Calls a custom method statically</li> <li><a href="#all">all()</a> : Returns the plain array</li> <li><a href="#any">any()</a> : Tests if at least one element satisfies the callback function</li> <li><a href="#at">at()</a> : Returns the value at the given position</li> <li><a href="#bool">bool()</a> : Returns an element by key and casts it to boolean</li> <li><a href="#call">call()</a> : Calls the given method on all items</li> <li><a href="#find">find()</a> : Returns the first/last element where the callback returns TRUE</li> <li><a href="#findkey">findKey()</a> : Returns the first/last key where the callback returns TRUE</li> <li><a href="#first">first()</a> : Returns the first element</li> <li><a href="#firstkey">firstKey()</a> : Returns the first key</li> <li><a href="#get">get()</a> : Returns an element by key</li> <li><a href="#index">index()</a> : Returns the numerical index of the given key</li> <li><a href="#int">int()</a> : Returns an element by key and casts it to integer</li> <li><a href="#float">float()</a> : Returns an element by key and casts it to float</li> <li><a href="#keys">keys()</a> : Returns all keys</li> <li><a href="#last">last()</a> : Returns the last element</li> <li><a href="#lastkey">lastKey()</a> : Returns the last key</li> <li><a href="#pop">pop()</a> : Returns and removes the last element</li> <li><a href="#pos">pos()</a> : Returns the numerical index of the value</li> <li><a href="#pull">pull()</a> : Returns and removes an element by key</li> <li><a href="#random">random()</a> : Returns random elements preserving keys</li> <li><a href="#search">search()</a> : Find the key of an element</li> <li><a href="#shift">shift()</a> : Returns and removes the first element</li> <li><a href="#string">string()</a> : Returns an element by key and casts it to string</li> <li><a href="#to">to()</a> : Returns the plain array</li> <li><a href="#toarray">toArray()</a> : Returns the plain array</li> <li><a href="#values">values()</a> : Returns all elements with new keys</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Add</h3><a id="user-content-add" class="anchor" aria-label="Permalink: Add" href="#add"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li><a href="#concat">concat()</a> : Adds all elements with new keys</li> <li><a href="#insertafter">insertAfter()</a> : Inserts the value after the given element</li> <li><a href="#insertat">insertAt()</a> : Inserts the element at the given position in the map</li> <li><a href="#insertbefore">insertBefore()</a> : Inserts the value before the given element</li> <li><a href="#merge">merge()</a> : Combines elements overwriting existing ones</li> <li><a href="#pad">pad()</a> : Fill up to the specified length with the given value</li> <li><a href="#prepend">prepend()</a> : Adds an element at the beginning (alias)</li> <li><a href="#push">push()</a> : Adds an element to the end</li> <li><a href="#put">put()</a> : Sets the given key and value in the map (alias)</li> <li><a href="#set">set()</a> : Overwrites or adds an element</li> <li><a href="#union">union()</a> : Adds the elements without overwriting existing ones</li> <li><a href="#unshift">unshift()</a> : Adds an element at the beginning</li> <li><a href="#with">with()</a> : Returns a copy and sets an element</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Aggregate</h3><a id="user-content-aggregate" class="anchor" aria-label="Permalink: Aggregate" href="#aggregate"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li><a href="#avg">avg()</a> : Returns the average of all values</li> <li><a href="#count">count()</a> : Returns the total number of elements</li> <li><a href="#countby">countBy()</a> : Counts how often the same values are in the map</li> <li><a href="#max">max()</a> : Returns the maximum value of all elements</li> <li><a href="#min">min()</a> : Returns the minium value of all elements</li> <li><a href="#percentage">percentage()</a> : Returns the percentage of all elements passing the test</li> <li><a href="#sum">sum()</a> : Returns the sum of all values in the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Debug</h3><a id="user-content-debug" class="anchor" aria-label="Permalink: Debug" href="#debug"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li><a href="#dd">dd()</a> : Prints the map content and terminates the script</li> <li><a href="#dump">dump()</a> : Prints the map content</li> <li><a href="#tap">tap()</a> : Passes a clone of the map to the given callback</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Order By</h3><a id="user-content-order-by" class="anchor" aria-label="Permalink: Order By" href="#order-by"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li><a href="#arsort">arsort()</a> : Reverse sort elements preserving keys</li> <li><a href="#arsorted">arsorted()</a> : Reverse sort elements preserving keys in a copy of the map</li> <li><a href="#asort">asort()</a> : Sort elements preserving keys</li> <li><a href="#asorted">asorted()</a> : Sort elements preserving keys in a copy of the map</li> <li><a href="#krsort">krsort()</a> : Reverse sort elements by keys</li> <li><a href="#krsorted">krsorted()</a> : Reverse sort elements by keys in a copy of the map</li> <li><a href="#ksort">ksort()</a> : Sort elements by keys</li> <li><a href="#ksorted">ksorted()</a> : Sorts a copy of the elements by their keys</li> <li><a href="#order">order()</a> : Orders elements by the passed keys</li> <li><a href="#reverse">reverse()</a> : Reverses the array order preserving keys</li> <li><a href="#reversed">reversed()</a> : Reverses the element order in a copy of the map</li> <li><a href="#toreversed">toReversed()</a> : Reverses the element order in a copy of the map (alias)</li> <li><a href="#rsort">rsort()</a> : Reverse sort elements using new keys</li> <li><a href="#rsorted">rsorted()</a> : Reverse sort elements using new keys in a copy of the map</li> <li><a href="#shuffle">shuffle()</a> : Randomizes the element order</li> <li><a href="#shuffled">shuffled()</a> : Randomizes the element order in a copy of the map</li> <li><a href="#sort">sort()</a> : Sorts the elements in-place assigning new keys</li> <li><a href="#sorted">sorted()</a> : Sorts the elements in a copy of the map using new keys</li> <li><a href="#tosorted">toSorted()</a> : Sorts the elements in a copy of the map using new keys (alias)</li> <li><a href="#uasort">uasort()</a> : Sorts elements preserving keys using callback</li> <li><a href="#uasorted">uasorted()</a> : Sorts elements preserving keys using callback in a copy of the map</li> <li><a href="#uksort">uksort()</a> : Sorts elements by keys using callback</li> <li><a href="#uksorted">uksorted()</a> : Sorts elements by keys using callback in a copy of the map</li> <li><a href="#usort">usort()</a> : Sorts elements using callback assigning new keys</li> <li><a href="#usorted">usorted()</a> : Sorts elements using callback assigning new keys in a copy of the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Shorten</h3><a id="user-content-shorten" class="anchor" aria-label="Permalink: Shorten" href="#shorten"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li><a href="#after">after()</a> : Returns the elements after the given one</li> <li><a href="#before">before()</a> : Returns the elements before the given one</li> <li><a href="#clear">clear()</a> : Removes all elements</li> <li><a href="#diff">diff()</a> : Returns the elements missing in the given list</li> <li><a href="#diffassoc">diffAssoc()</a> : Returns the elements missing in the given list and checks keys</li> <li><a href="#diffkeys">diffKeys()</a> : Returns the elements missing in the given list by keys</li> <li><a href="#duplicates">duplicates()</a> : Returns the duplicate values from the map</li> <li><a href="#except">except()</a> : Returns a new map without the passed element keys</li> <li><a href="#filter">filter()</a> : Applies a filter to all elements</li> <li><a href="#grep">grep()</a> : Applies a regular expression to all elements</li> <li><a href="#intersect">intersect()</a> : Returns the elements shared</li> <li><a href="#intersectassoc">intersectAssoc()</a> : Returns the elements shared and checks keys</li> <li><a href="#intersectkeys">intersectKeys()</a> : Returns the elements shared by keys</li> <li><a href="#nth">nth()</a> : Returns every nth element from the map</li> <li><a href="#only">only()</a> : Returns only those elements specified by the keys</li> <li><a href="#pop">pop()</a> : Returns and removes the last element</li> <li><a href="#pull">pull()</a> : Returns and removes an element by key</li> <li><a href="#reject">reject()</a> : Removes all matched elements</li> <li><a href="#remove">remove()</a> : Removes an element by key</li> <li><a href="#shift">shift()</a> : Returns and removes the first element</li> <li><a href="#skip">skip()</a> : Skips the given number of items and return the rest</li> <li><a href="#slice">slice()</a> : Returns a slice of the map</li> <li><a href="#take">take()</a> : Returns a new map with the given number of items</li> <li><a href="#unique">unique()</a> : Returns all unique elements preserving keys</li> <li><a href="#where">where()</a> : Filters the list of elements by a given condition</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Test</h3><a id="user-content-test" class="anchor" aria-label="Permalink: Test" href="#test"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li><a href="#is_map-function">function is_map()</a> : Tests if the variable is a map object</li> <li><a href="#any">any()</a> : Tests if at least one element satisfies the callback function</li> <li><a href="#contains">contains()</a> : Tests if an item exists in the map</li> <li><a href="#each">each()</a> : Applies a callback to each element</li> <li><a href="#empty">empty()</a> : Tests if map is empty</li> <li><a href="#equals">equals()</a> : Tests if map contents are equal</li> <li><a href="#every">every()</a> : Verifies that all elements pass the test of the given callback</li> <li><a href="#has">has()</a> : Tests if a key exists</li> <li><a href="#if">if()</a> : Executes callbacks depending on the condition</li> <li><a href="#ifany">ifAny()</a> : Executes callbacks if the map contains elements</li> <li><a href="#ifempty">ifEmpty()</a> : Executes callbacks if the map is empty</li> <li><a href="#in">in()</a> : Tests if element is included</li> <li><a href="#includes">includes()</a> : Tests if element is included</li> <li><a href="#is">is()</a> : Tests if the map consists of the same keys and values</li> <li><a href="#isempty">isEmpty()</a> : Tests if map is empty</li> <li><a href="#islist">isList()</a> : Checks if the map contains a list of subsequentially numbered keys</li> <li><a href="#isnumeric">isNumeric()</a> : Tests if all entries are numeric values</li> <li><a href="#isobject">isObject()</a> : Tests if all entries are objects</li> <li><a href="#isscalar">isScalar()</a> : Tests if all entries are scalar values.</li> <li><a href="#isstring">isString()</a> : Tests if all entries are string values.</li> <li><a href="#implements">implements()</a> : Tests if all entries are objects implementing the interface</li> <li><a href="#none">none()</a> : Tests if none of the elements are part of the map</li> <li><a href="#some">some()</a> : Tests if at least one element is included</li> <li><a href="#strcompare">strCompare()</a> : Compares the value against all map elements</li> <li><a href="#strcontains">strContains()</a> : Tests if at least one of the passed strings is part of at least one entry</li> <li><a href="#strcontainsall">strContainsAll()</a> : Tests if all of the entries contains one of the passed strings</li> <li><a href="#strends">strEnds()</a> : Tests if at least one of the entries ends with one of the passed strings</li> <li><a href="#strendsall">strEndsAll()</a> : Tests if all of the entries ends with at least one of the passed strings</li> <li><a href="#strstarts">strStarts()</a> : Tests if at least one of the entries starts with at least one of the passed strings</li> <li><a href="#strstartsall">strStartsAll()</a> : Tests if all of the entries starts with one of the passed strings</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Mutate</h3><a id="user-content-mutate" class="anchor" aria-label="Permalink: Mutate" href="#mutate"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li><a href="#cast">cast()</a> : Casts all entries to the passed type</li> <li><a href="#chunk">chunk()</a> : Splits the map into chunks</li> <li><a href="#col">col()</a> : Creates a key/value mapping</li> <li><a href="#collapse">collapse()</a> : Collapses multi-dimensional elements overwriting elements</li> <li><a href="#combine">combine()</a> : Combines the map elements as keys with the given values</li> <li><a href="#flat">flat()</a> : Flattens multi-dimensional elements without overwriting elements</li> <li><a href="#flip">flip()</a> : Exchanges keys with their values</li> <li><a href="#groupby">groupBy()</a> : Groups associative array elements or objects</li> <li><a href="#join">join()</a> : Returns concatenated elements as string with separator</li> <li><a href="#ltrim">ltrim()</a> : Removes the passed characters from the left of all strings</li> <li><a href="#map">map()</a> : Applies a callback to each element and returns the results</li> <li><a href="#partition">partition()</a> : Breaks the list into the given number of groups</li> <li><a href="#pipe">pipe()</a> : Applies a callback to the whole map</li> <li><a href="#pluck">pluck()</a> : Creates a key/value mapping (alias)</li> <li><a href="#prefix">prefix()</a> : Adds a prefix to each map entry</li> <li><a href="#reduce">reduce()</a> : Computes a single value from the map content</li> <li><a href="#rekey">rekey()</a> : Changes the keys according to the passed function</li> <li><a href="#replace">replace()</a> : Replaces elements recursively</li> <li><a href="#rtrim">rtrim()</a> : Removes the passed characters from the right of all strings</li> <li><a href="#splice">splice()</a> : Replaces a slice by new elements</li> <li><a href="#strafter">strAfter()</a> : Returns the strings after the passed value</li> <li><a href="#strbefore">strBefore()</a> : Returns the strings before the passed value</li> <li><a href="#strlower">strLower()</a> : Converts all alphabetic characters to lower case</li> <li><a href="#strreplace">strReplace()</a> : Replaces all occurrences of the search string with the replacement string</li> <li><a href="#strupper">strUpper()</a> : Converts all alphabetic characters to upper case</li> <li><a href="#suffix">suffix()</a> : Adds a suffix to each map entry</li> <li><a href="#tojson">toJson()</a> : Returns the elements in JSON format</li> <li><a href="#tourl">toUrl()</a> : Creates a HTTP query string</li> <li><a href="#transform">transform()</a> : Applies a callback to each element which creates new key/value pairs</li> <li><a href="#transpose">transpose()</a> : Exchanges rows and columns for a two dimensional map</li> <li><a href="#traverse">traverse()</a> : Traverses trees of nested items passing each item to the callback</li> <li><a href="#trim">trim()</a> : Removes the passed characters from the left/right of all strings</li> <li><a href="#walk">walk()</a> : Applies the given callback to all elements</li> <li><a href="#zip">zip()</a> : Merges the values of all arrays at the corresponding index</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Misc</h3><a id="user-content-misc" class="anchor" aria-label="Permalink: Misc" href="#misc"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li><a href="#delimiter">delimiter()</a> : Sets or returns the seperator for paths to multi-dimensional arrays</li> <li><a href="#getiterator">getIterator()</a> : Returns an iterator for the elements</li> <li><a href="#jsonserialize">jsonSerialize()</a> : Specifies the data which should be serialized to JSON</li> <li><a href="#method">method()</a> : Registers a custom method</li> <li><a href="#offsetexists">offsetExists()</a> : Checks if the key exists</li> <li><a href="#offsetget">offsetGet()</a> : Returns an element by key</li> <li><a href="#offsetset">offsetSet()</a> : Overwrites an element</li> <li><a href="#offsetunset">offsetUnset()</a> : Removes an element by key</li> <li><a href="#sep">sep()</a> : Sets the seperator for paths to multi-dimensional arrays in the current map</li> </ul> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Method documentation</h2><a id="user-content-method-documentation" class="anchor" aria-label="Permalink: Method documentation" href="#method-documentation"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">is_map() function</h3><a id="user-content-is_map-function" class="anchor" aria-label="Permalink: is_map() function" href="#is_map-function"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if the variable is a map object</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="function is_map( $var ) : bool"><pre><span class="pl-k">function</span> is_map( <span class="pl-s1"><span class="pl-c1">$</span>var</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>mixed</strong> <code>$var</code> Variable to test</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="is_map( new Map() ); // true is_map( [] ); // false"><pre><span class="pl-en">is_map</span>( <span class="pl-k">new</span> <span class="pl-v">Map</span>() ); <span class="pl-c">// true</span> <span class="pl-en">is_map</span>( [] ); <span class="pl-c">// false</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">map() function</h3><a id="user-content-map-function" class="anchor" aria-label="Permalink: map() function" href="#map-function"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns a new map for the passed elements.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="function map( $elements = [] ) : \Aimeos\Map"><pre><span class="pl-k">function</span> map( <span class="pl-s1"><span class="pl-c1">$</span>elements</span> = [] ) : \<span class="pl-v">Aimeos</span>\<span class="pl-v">Map</span></pre></div> <ul dir="auto"> <li>@param <strong>mixed</strong> <code>$elements</code> List of elements or single value</li> <li>@return <strong>\Aimeos\Map</strong> Map instance</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="// array map( [] ); // null map( null ); // scalar map( 'a' ); // object map( new \stdClass() ); // map object map( new Map() ); // iterable object map( new ArrayObject() ); // closure evaluated lazily map( function() { return []; } );"><pre><span class="pl-c">// array</span> <span class="pl-en">map</span>( [] ); <span class="pl-c">// null</span> <span class="pl-en">map</span>( <span class="pl-c1">null</span> ); <span class="pl-c">// scalar</span> <span class="pl-en">map</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// object</span> <span class="pl-en">map</span>( <span class="pl-k">new</span> \<span class="pl-v">stdClass</span>() ); <span class="pl-c">// map object</span> <span class="pl-en">map</span>( <span class="pl-k">new</span> <span class="pl-v">Map</span>() ); <span class="pl-c">// iterable object</span> <span class="pl-en">map</span>( <span class="pl-k">new</span> <span class="pl-v">ArrayObject</span>() ); <span class="pl-c">// closure evaluated lazily</span> <span class="pl-en">map</span>( <span class="pl-k">function</span>() { <span class="pl-k">return</span> []; } );</pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#rekey">rekey()</a> - Changes the keys according to the passed function</li> <li><a href="#transform">transform()</a> - Creates new key/value pairs using the passed function and returns a new map for the result</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">__construct()</h3><a id="user-content-__construct" class="anchor" aria-label="Permalink: __construct()" href="#__construct"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Creates a new map object.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function __construct( $elements = [] )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> __construct( <span class="pl-s1"><span class="pl-c1">$</span>elements</span> = [] )</pre></div> <ul dir="auto"> <li>@param <strong>mixed</strong> <code>$elements</code> Single element, list of elements, Map object, iterable objects or iterators, everything else</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="// array new Map( [] ); // null new Map( null ); // scalar new Map( 'a' ); // object new Map( new \stdClass() ); // map object new Map( new Map() ); // iterable object new Map( new ArrayObject() ); // closure evaluated lazily new Map( function() { return []; } );"><pre><span class="pl-c">// array</span> <span class="pl-k">new</span> <span class="pl-v">Map</span>( [] ); <span class="pl-c">// null</span> <span class="pl-k">new</span> <span class="pl-v">Map</span>( <span class="pl-c1">null</span> ); <span class="pl-c">// scalar</span> <span class="pl-k">new</span> <span class="pl-v">Map</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// object</span> <span class="pl-k">new</span> <span class="pl-v">Map</span>( <span class="pl-k">new</span> \<span class="pl-v">stdClass</span>() ); <span class="pl-c">// map object</span> <span class="pl-k">new</span> <span class="pl-v">Map</span>( <span class="pl-k">new</span> <span class="pl-v">Map</span>() ); <span class="pl-c">// iterable object</span> <span class="pl-k">new</span> <span class="pl-v">Map</span>( <span class="pl-k">new</span> <span class="pl-v">ArrayObject</span>() ); <span class="pl-c">// closure evaluated lazily</span> <span class="pl-k">new</span> <span class="pl-v">Map</span>( <span class="pl-k">function</span>() { <span class="pl-k">return</span> []; } );</pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">__call()</h3><a id="user-content-__call" class="anchor" aria-label="Permalink: __call()" href="#__call"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Handles dynamic calls to custom methods for the class.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function __call( string $name, array $params )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> __call( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>name</span>, <span class="pl-smi">array</span> <span class="pl-s1"><span class="pl-c1">$</span>params</span> )</pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$name</code> Method name</li> <li>@param <strong>array&lt;mixed&gt;</strong> <code>$params</code> List of parameters</li> <li>@return <strong>mixed</strong> Result from called function or new map with results from the element methods</li> </ul> <p dir="auto">Calls a custom method added by <a href="#method">Map::method()</a>. The called method has access to the internal array by using <code>$this-&gt;items</code>.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::method( 'case', function( $case = CASE_LOWER ) { return new self( array_change_key_case( $this-&gt;items, $case ) ); } ); Map::from( ['a' =&gt; 'bar'] )-&gt;case( CASE_UPPER ); // ['A' =&gt; 'bar']"><pre>Map::<span class="pl-en">method</span>( <span class="pl-s">'<span class="pl-s">case</span>'</span>, <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>case</span> = <span class="pl-c1">CASE_LOWER</span> ) { <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-v">self</span>( <span class="pl-en">array_change_key_case</span>( <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-c1">items</span>, <span class="pl-s1"><span class="pl-c1">$</span>case</span> ) ); } ); Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">case</span>( <span class="pl-c1">CASE_UPPER</span> ); <span class="pl-c">// ['A' =&gt; 'bar']</span></pre></div> <p dir="auto">This does also allow calling object methods if the items are objects:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$item = new MyClass(); // with method setStatus() (returning $this) and getCode() implemented Map::from( [$item, $item] )-&gt;setStatus( 1 )-&gt;getCode()-&gt;toArray();"><pre><span class="pl-s1"><span class="pl-c1">$</span>item</span> = <span class="pl-k">new</span> <span class="pl-v">MyClass</span>(); <span class="pl-c">// with method setStatus() (returning $this) and getCode() implemented</span> Map::<span class="pl-en">from</span>( [<span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>item</span>] )-&gt;<span class="pl-en">setStatus</span>( <span class="pl-c1">1</span> )-&gt;<span class="pl-en">getCode</span>()-&gt;<span class="pl-en">toArray</span>();</pre></div> <p dir="auto">This will call the <code>setStatus()</code> method of each element in the map and use their return values to create a new map. On the new map, the <code>getCode()</code> method is called for every element and its return values are also stored in a new map. This last map is then returned and the map keys from the original map are preserved in the returned map.</p> <p dir="auto">If the elements are not objects, they are skipped and if this applies to all elements, an empty map is returned. In case the map contains objects of mixed types and one of them doesn't implement the called method, an error will be thrown.</p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#__callStatic">__callStatic()</a> - Handles static calls to custom methods for the class</li> <li><a href="#call">call()</a> - Calls the given method on all items and returns the result</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">__callStatic()</h3><a id="user-content-__callstatic" class="anchor" aria-label="Permalink: __callStatic()" href="#__callstatic"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Handles static calls to custom methods for the class.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public static function __callStatic( string $name, array $params )"><pre><span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">function</span> __callStatic( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>name</span>, <span class="pl-smi">array</span> <span class="pl-s1"><span class="pl-c1">$</span>params</span> )</pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$name</code> Method name</li> <li>@param <strong>array&lt;mixed&gt;</strong> <code>$params</code> List of parameters</li> <li>@return <strong>mixed</strong> Result from called function or new map with results from the element methods</li> <li>@throws <strong>\BadMethodCallException</strong> If no method has been registered for that name</li> </ul> <p dir="auto">Calls a custom method added by <a href="#method">Map::method()</a> statically. The called method has no access to the internal array because no object is available.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::method( 'foo', function( $arg1, $arg2 ) {} ); Map::foo( $arg1, $arg2 );"><pre>Map::<span class="pl-en">method</span>( <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>arg1</span>, <span class="pl-s1"><span class="pl-c1">$</span>arg2</span> ) {} ); Map::<span class="pl-en">foo</span>( <span class="pl-s1"><span class="pl-c1">$</span>arg1</span>, <span class="pl-s1"><span class="pl-c1">$</span>arg2</span> );</pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#__call">__call()</a> - Handles dynamic calls to custom methods for the class</li> <li><a href="#call">call()</a> - Calls the given method on all items and returns the result</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">after()</h3><a id="user-content-after" class="anchor" aria-label="Permalink: after()" href="#after"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the elements after the given one.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function after( $value ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> after( <span class="pl-s1"><span class="pl-c1">$</span>value</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|int|string</strong> <code>$value</code> Value or function with (item, key) parameters</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with the elements after the given one</li> </ul> <p dir="auto">The keys are preserved using this method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [0 =&gt; 'b', 1 =&gt; 'a'] )-&gt;after( 'b' ); // [1 =&gt; 'a'] Map::from( ['a' =&gt; 1, 'b' =&gt; 0] )-&gt;after( 1 ); // ['b' =&gt; 0] Map::from( [0 =&gt; 'b', 1 =&gt; 'a'] )-&gt;after( 'c' ); // [] Map::from( ['a', 'c', 'b'] )-&gt;after( function( $item, $key ) { return $item &gt;= 'c'; } ); // [2 =&gt; 'b']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">after</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// [1 =&gt; 'a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>] )-&gt;<span class="pl-en">after</span>( <span class="pl-c1">1</span> ); <span class="pl-c">// ['b' =&gt; 0]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">after</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span> ); <span class="pl-c">// []</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">after</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>item</span> &gt;= <span class="pl-s">'<span class="pl-s">c</span>'</span>; } ); <span class="pl-c">// [2 =&gt; 'b']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#before">before()</a> - Returns the elements before the given one</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">all()</h3><a id="user-content-all" class="anchor" aria-label="Permalink: all()" href="#all"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the elements as a plain array.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function all() : array"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> all() : <span class="pl-smi">array</span></pre></div> <ul dir="auto"> <li>@return <strong>array</strong> Plain array</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a'] )-&gt;all(); // ['a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">all</span>(); <span class="pl-c">// ['a']</span></pre></div> <p dir="auto">This method is for compatibility to Laravel Collections. Use <a href="#to"><code>to()</code></a> instead if possible.</p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#to">to()</a> - Returns the elements as a plain array</li> <li><a href="#toarray">toArray()</a> - Returns the elements as a plain array</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">any()</h3><a id="user-content-any" class="anchor" aria-label="Permalink: any()" href="#any"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if at least one element satisfies the callback function.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function any( \Closure $callback ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> any( <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param \Closure $callback Anonymous function with (item, key) parameter</li> <li>@return bool TRUE if at least one element satisfies the callback function, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;any( function( $item, $key ) { return $item === 'a'; } ); // TRUE Map::from( ['a', 'b'] )-&gt;any( function( $item, $key ) { return !is_string( $item ); } ); // FALSE"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">any</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>item</span> === <span class="pl-s">'<span class="pl-s">a</span>'</span>; } ); <span class="pl-c">// TRUE</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">any</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> !<span class="pl-en">is_string</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span> ); } ); <span class="pl-c">// FALSE</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#some">some()</a> - Tests if at least one element passes the test or is part of the map</li> <li><a href="#every">every()</a> - Verifies that all elements pass the test of the given callback</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">arsort()</h3><a id="user-content-arsort" class="anchor" aria-label="Permalink: arsort()" href="#arsort"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts all elements in reverse order and maintains the key association.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function arsort( int $options = SORT_REGULAR ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> arsort( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">SORT_REGULAR</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Sort options for <code>arsort()</code></li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The keys are preserved using this method and no new map is created.</p> <p dir="auto">The <code>$options</code> parameter modifies how the values are compared. Possible parameter values are:</p> <ul dir="auto"> <li>SORT_REGULAR : compare elements normally (don't change types)</li> <li>SORT_NUMERIC : compare elements numerically</li> <li>SORT_STRING : compare elements as strings</li> <li>SORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by <code>setlocale()</code></li> <li>SORT_NATURAL : compare elements as strings using "natural ordering" like <code>natsort()</code></li> <li>SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['b' =&gt; 0, 'a' =&gt; 1] )-&gt;arsort(); // ['a' =&gt; 1, 'b' =&gt; 0] Map::from( ['a', 'b'] )-&gt;arsort(); // ['b', 'a'] Map::from( [0 =&gt; 'C', 1 =&gt; 'b'] )-&gt;arsort(); // [1 =&gt; 'b', 0 =&gt; 'C'] Map::from( [0 =&gt; 'C', 1 =&gt; 'b'] )-&gt;arsort( SORT_STRING|SORT_FLAG_CASE ); // [0 =&gt; 'C', 1 =&gt; 'b'] because 'C' -&gt; 'c' and 'c' &gt; 'b'"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>] )-&gt;<span class="pl-en">arsort</span>(); <span class="pl-c">// ['a' =&gt; 1, 'b' =&gt; 0]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">arsort</span>(); <span class="pl-c">// ['b', 'a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">C</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">arsort</span>(); <span class="pl-c">// [1 =&gt; 'b', 0 =&gt; 'C']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">C</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">arsort</span>( <span class="pl-c1">SORT_STRING</span>|<span class="pl-c1">SORT_FLAG_CASE</span> ); <span class="pl-c">// [0 =&gt; 'C', 1 =&gt; 'b'] because 'C' -&gt; 'c' and 'c' &gt; 'b'</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#arsorted">arsorted()</a> - Sorts a copy of all elements in reverse order and maintains the key association</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">arsorted()</h3><a id="user-content-arsorted" class="anchor" aria-label="Permalink: arsorted()" href="#arsorted"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts a copy of all elements in reverse order and maintains the key association.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function arsorted( int $options = SORT_REGULAR ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> arsorted( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">SORT_REGULAR</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Sort options for <code>arsort()</code></li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The keys are preserved using this method and a new map is created.</p> <p dir="auto">The <code>$options</code> parameter modifies how the values are compared. Possible parameter values are:</p> <ul dir="auto"> <li>SORT_REGULAR : compare elements normally (don't change types)</li> <li>SORT_NUMERIC : compare elements numerically</li> <li>SORT_STRING : compare elements as strings</li> <li>SORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by <code>setlocale()</code></li> <li>SORT_NATURAL : compare elements as strings using "natural ordering" like <code>natsort()</code></li> <li>SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['b' =&gt; 0, 'a' =&gt; 1] )-&gt;arsorted(); // ['a' =&gt; 1, 'b' =&gt; 0] Map::from( ['a', 'b'] )-&gt;arsorted(); // ['b', 'a'] Map::from( [0 =&gt; 'C', 1 =&gt; 'b'] )-&gt;arsorted(); // [1 =&gt; 'b', 0 =&gt; 'C'] Map::from( [0 =&gt; 'C', 1 =&gt; 'b'] )-&gt;arsorted( SORT_STRING|SORT_FLAG_CASE ); // [0 =&gt; 'C', 1 =&gt; 'b'] because 'C' -&gt; 'c' and 'c' &gt; 'b'"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>] )-&gt;<span class="pl-en">arsorted</span>(); <span class="pl-c">// ['a' =&gt; 1, 'b' =&gt; 0]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">arsorted</span>(); <span class="pl-c">// ['b', 'a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">C</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">arsorted</span>(); <span class="pl-c">// [1 =&gt; 'b', 0 =&gt; 'C']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">C</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">arsorted</span>( <span class="pl-c1">SORT_STRING</span>|<span class="pl-c1">SORT_FLAG_CASE</span> ); <span class="pl-c">// [0 =&gt; 'C', 1 =&gt; 'b'] because 'C' -&gt; 'c' and 'c' &gt; 'b'</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#arsort">arsort()</a> - Sorts all elements in reverse order and maintains the key association</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">asort()</h3><a id="user-content-asort" class="anchor" aria-label="Permalink: asort()" href="#asort"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts all elements and maintains the key association.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function asort( int $options = SORT_REGULAR ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> asort( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">SORT_REGULAR</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Sort options for <code>asort()</code></li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The keys are preserved using this method and no new map is created.</p> <p dir="auto">The parameter modifies how the values are compared. Possible parameter values are:</p> <ul dir="auto"> <li>SORT_REGULAR : compare elements normally (don't change types)</li> <li>SORT_NUMERIC : compare elements numerically</li> <li>SORT_STRING : compare elements as strings</li> <li>SORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by <code>setlocale()</code></li> <li>SORT_NATURAL : compare elements as strings using "natural ordering" like <code>natsort()</code></li> <li>SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 'b' =&gt; 0] )-&gt;asort(); // ['b' =&gt; 0, 'a' =&gt; 1] Map::from( [0 =&gt; 'b', 1 =&gt; 'a'] )-&gt;asort(); // [1 =&gt; 'a', 0 =&gt; 'b'] Map::from( [0 =&gt; 'C', 1 =&gt; 'b'] )-&gt;asort(); // [0 =&gt; 'C', 1 =&gt; 'b'] because 'C' &lt; 'b' Map::from( [0 =&gt; 'C', 1 =&gt; 'b'] )-&gt;asort( SORT_STRING|SORT_FLAG_CASE ); // [1 =&gt; 'b', 0 =&gt; 'C'] because 'C' -&gt; 'c' and 'c' &gt; 'b'"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>] )-&gt;<span class="pl-en">asort</span>(); <span class="pl-c">// ['b' =&gt; 0, 'a' =&gt; 1]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">asort</span>(); <span class="pl-c">// [1 =&gt; 'a', 0 =&gt; 'b']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">C</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">asort</span>(); <span class="pl-c">// [0 =&gt; 'C', 1 =&gt; 'b'] because 'C' &lt; 'b'</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">C</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">asort</span>( <span class="pl-c1">SORT_STRING</span>|<span class="pl-c1">SORT_FLAG_CASE</span> ); <span class="pl-c">// [1 =&gt; 'b', 0 =&gt; 'C'] because 'C' -&gt; 'c' and 'c' &gt; 'b'</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#asorted">asorted()</a> - Sorts a copy of all elements and maintains the key association</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">asorted()</h3><a id="user-content-asorted" class="anchor" aria-label="Permalink: asorted()" href="#asorted"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts a copy of all elements and maintains the key association.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function asorted( int $options = SORT_REGULAR ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> asorted( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">SORT_REGULAR</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Sort options for <code>asort()</code></li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The keys are preserved using this method and a new map is created.</p> <p dir="auto">The parameter modifies how the values are compared. Possible parameter values are:</p> <ul dir="auto"> <li>SORT_REGULAR : compare elements normally (don't change types)</li> <li>SORT_NUMERIC : compare elements numerically</li> <li>SORT_STRING : compare elements as strings</li> <li>SORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by <code>setlocale()</code></li> <li>SORT_NATURAL : compare elements as strings using "natural ordering" like <code>natsort()</code></li> <li>SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 'b' =&gt; 0] )-&gt;asorted(); // ['b' =&gt; 0, 'a' =&gt; 1] Map::from( [0 =&gt; 'b', 1 =&gt; 'a'] )-&gt;asorted(); // [1 =&gt; 'a', 0 =&gt; 'b'] Map::from( [0 =&gt; 'C', 1 =&gt; 'b'] )-&gt;asorted(); // [0 =&gt; 'C', 1 =&gt; 'b'] because 'C' &lt; 'b' Map::from( [0 =&gt; 'C', 1 =&gt; 'b'] )-&gt;asorted( SORT_STRING|SORT_FLAG_CASE ); // [1 =&gt; 'b', 0 =&gt; 'C'] because 'C' -&gt; 'c' and 'c' &gt; 'b'"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>] )-&gt;<span class="pl-en">asorted</span>(); <span class="pl-c">// ['b' =&gt; 0, 'a' =&gt; 1]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">asorted</span>(); <span class="pl-c">// [1 =&gt; 'a', 0 =&gt; 'b']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">C</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">asorted</span>(); <span class="pl-c">// [0 =&gt; 'C', 1 =&gt; 'b'] because 'C' &lt; 'b'</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">C</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">asorted</span>( <span class="pl-c1">SORT_STRING</span>|<span class="pl-c1">SORT_FLAG_CASE</span> ); <span class="pl-c">// [1 =&gt; 'b', 0 =&gt; 'C'] because 'C' -&gt; 'c' and 'c' &gt; 'b'</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#asort">asort()</a> - Sorts all elements and maintains the key association</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">at()</h3><a id="user-content-at" class="anchor" aria-label="Permalink: at()" href="#at"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the value at the given position.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function at( int $pos )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> at( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>pos</span> )</pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$pos</code> Position of the value in the map</li> <li>@return <strong>mixed�null</strong> Value at the given position or NULL if no value is available</li> </ul> <p dir="auto">The position starts from zero and a position of "0" returns the first element of the map, "1" the second and so on. If the position is negative, the sequence will start from the end of the map.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [1, 3, 5] )-&gt;at( 0 ); // 1 Map::from( [1, 3, 5] )-&gt;at( 1 ); // 3 Map::from( [1, 3, 5] )-&gt;at( -1 ); // 5 Map::from( [1, 3, 5] )-&gt;at( 3 ); // NULL"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">3</span>, <span class="pl-c1">5</span>] )-&gt;<span class="pl-en">at</span>( <span class="pl-c1">0</span> ); <span class="pl-c">// 1</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">3</span>, <span class="pl-c1">5</span>] )-&gt;<span class="pl-en">at</span>( <span class="pl-c1">1</span> ); <span class="pl-c">// 3</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">3</span>, <span class="pl-c1">5</span>] )-&gt;<span class="pl-en">at</span>( -<span class="pl-c1">1</span> ); <span class="pl-c">// 5</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">3</span>, <span class="pl-c1">5</span>] )-&gt;<span class="pl-en">at</span>( <span class="pl-c1">3</span> ); <span class="pl-c">// NULL</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#index">index()</a> - Returns the numerical index of the given key</li> <li><a href="#pos">pos()</a> - Returns the numerical index of the value</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">avg()</h3><a id="user-content-avg" class="anchor" aria-label="Permalink: avg()" href="#avg"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the average of all integer and float values in the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function avg( $col = null ) : float"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> avg( <span class="pl-s1"><span class="pl-c1">$</span>col</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi">float</span></pre></div> <ul dir="auto"> <li>@param <strong>Closure|string|null</strong> <code>$col</code> Closure, key or path to the values in the nested array or object to compute the average for</li> <li>@return <strong>float</strong> Average of all elements or 0 if there are no elements in the map</li> </ul> <p dir="auto">Non-numeric values will be removed before calculation.</p> <p dir="auto">This does also work for multi-dimensional arrays by passing the keys of the arrays separated by the delimiter ("/" by default), e.g. "key1/key2/key3" to get "val" from <code>['key1' =&gt; ['key2' =&gt; ['key3' =&gt; 'val']]]</code>. The same applies to public properties of objects or objects implementing <code>__isset()</code> and <code>__get()</code> methods.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [1, 3, 5] )-&gt;avg(); // 3 Map::from( [1, null, 5] )-&gt;avg(); // 3 Map::from( [1, 'sum', 5] )-&gt;avg(); // 2 Map::from( [['p' =&gt; 30], ['p' =&gt; 50], ['p' =&gt; 10]] )-&gt;avg( 'p' ); // 30 Map::from( [['i' =&gt; ['p' =&gt; 30]], ['i' =&gt; ['p' =&gt; 50]]] )-&gt;avg( 'i/p' ); // 40 Map::from( [['i' =&gt; ['p' =&gt; 30]], ['i' =&gt; ['p' =&gt; 50]]] )-&gt;avg( fn( $val, $key ) =&gt; $val['i']['p'] ?? null ); // 40 Map::from( [['p' =&gt; 30], ['p' =&gt; 50], ['p' =&gt; 10]] )-&gt;avg( fn( $val, $key ) =&gt; $key &lt; 1 ? $val : null ); // 30"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">3</span>, <span class="pl-c1">5</span>] )-&gt;<span class="pl-en">avg</span>(); <span class="pl-c">// 3</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">null</span>, <span class="pl-c1">5</span>] )-&gt;<span class="pl-en">avg</span>(); <span class="pl-c">// 3</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">sum</span>'</span>, <span class="pl-c1">5</span>] )-&gt;<span class="pl-en">avg</span>(); <span class="pl-c">// 2</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">30</span>], [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">50</span>], [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">10</span>]] )-&gt;<span class="pl-en">avg</span>( <span class="pl-s">'<span class="pl-s">p</span>'</span> ); <span class="pl-c">// 30</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">30</span>]], [<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">50</span>]]] )-&gt;<span class="pl-en">avg</span>( <span class="pl-s">'<span class="pl-s">i/p</span>'</span> ); <span class="pl-c">// 40</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">30</span>]], [<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">50</span>]]] )-&gt;<span class="pl-en">avg</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>val</span>[<span class="pl-s">'<span class="pl-s">i</span>'</span>][<span class="pl-s">'<span class="pl-s">p</span>'</span>] ?? <span class="pl-c1">null</span> ); <span class="pl-c">// 40</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">30</span>], [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">50</span>], [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">10</span>]] )-&gt;<span class="pl-en">avg</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>key</span> &lt; <span class="pl-c1">1</span> ? <span class="pl-s1"><span class="pl-c1">$</span>val</span> : <span class="pl-c1">null</span> ); <span class="pl-c">// 30</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#count">count()</a> - Returns the total number of elements</li> <li><a href="#max">max()</a> - Returns the maximum value of all elements</li> <li><a href="#min">min()</a> - Returns the minium value of all elements</li> <li><a href="#percentage">percentage()</a> - Returns the percentage of all elements passing the test</li> <li><a href="#sum">sum()</a> - Returns the sum of all values in the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">before()</h3><a id="user-content-before" class="anchor" aria-label="Permalink: before()" href="#before"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the elements before the given one.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function before( $value ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> before( <span class="pl-s1"><span class="pl-c1">$</span>value</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|int|string</strong> <code>$value</code> Value or function with (item, key) parameters</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with the elements before the given one</li> </ul> <p dir="auto">The keys are preserved using this method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 'b' =&gt; 0] )-&gt;before( 0 ); // ['a' =&gt; 1] Map::from( [0 =&gt; 'b', 1 =&gt; 'a'] )-&gt;before( 'a' ); // [0 =&gt; 'b'] Map::from( [0 =&gt; 'b', 1 =&gt; 'a'] )-&gt;before( 'c' ); // [] Map::from( ['a', 'c', 'b'] )-&gt;before( function( $item, $key ) { return $key &gt;= 1; } ); // [0 =&gt; 'a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>] )-&gt;<span class="pl-en">before</span>( <span class="pl-c1">0</span> ); <span class="pl-c">// ['a' =&gt; 1]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">before</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// [0 =&gt; 'b']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">before</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span> ); <span class="pl-c">// []</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">before</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>key</span> &gt;= <span class="pl-c1">1</span>; } ); <span class="pl-c">// [0 =&gt; 'a']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#after">after()</a> - Returns the elements after the given one</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">bool()</h3><a id="user-content-bool" class="anchor" aria-label="Permalink: bool()" href="#bool"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns an element by key and casts it to boolean if possible.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function bool( $key, $default = false ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> bool( <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-s1"><span class="pl-c1">$</span>default</span> = <span class="pl-c1">false</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>int|string</strong> <code>$key</code> Key or path to the requested item</li> <li>@param <strong>mixed</strong> <code>$default</code> Default value if key isn't found (will be casted to bool)</li> <li>@return <strong>bool</strong> Value from map or default value</li> </ul> <p dir="auto">This does also work to map values from multi-dimensional arrays by passing the keys of the arrays separated by the delimiter ("/" by default), e.g. <code>key1/key2/key3</code> to get <code>val</code> from <code>['key1' =&gt; ['key2' =&gt; ['key3' =&gt; 'val']]]</code>. The same applies to public properties of objects or objects implementing <code>__isset()</code> and <code>__get()</code> methods.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; true] )-&gt;bool( 'a' ); // true Map::from( ['a' =&gt; '1'] )-&gt;bool( 'a' ); // true (casted to boolean) Map::from( ['a' =&gt; 1.1] )-&gt;bool( 'a' ); // true (casted to boolean) Map::from( ['a' =&gt; '10'] )-&gt;bool( 'a' ); // true (casted to boolean) Map::from( ['a' =&gt; 'abc'] )-&gt;bool( 'a' ); // true (casted to boolean) Map::from( ['a' =&gt; ['b' =&gt; ['c' =&gt; true]]] )-&gt;bool( 'a/b/c' ); // true Map::from( [] )-&gt;bool( 'c', function() { return rand( 1, 2 ); } ); // true (value returned by closure is casted to boolean) Map::from( [] )-&gt;bool( 'a', true ); // true (default value used) Map::from( [] )-&gt;bool( 'a' ); // false Map::from( ['b' =&gt; ''] )-&gt;bool( 'b' ); // false (casted to boolean) Map::from( ['b' =&gt; null] )-&gt;bool( 'b' ); // false (null is not scalar) Map::from( ['b' =&gt; [true]] )-&gt;bool( 'b' ); // false (arrays are not scalar) Map::from( ['b' =&gt; '#resource'] )-&gt;bool( 'b' ); // false (resources are not scalar) Map::from( ['b' =&gt; new \stdClass] )-&gt;bool( 'b' ); // false (objects are not scalar) Map::from( [] )-&gt;bool( 'c', new \Exception( 'error' ) ); // throws exception"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">true</span>] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">1</span>'</span>] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// true (casted to boolean)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1.1</span>] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// true (casted to boolean)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">10</span>'</span>] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// true (casted to boolean)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// true (casted to boolean)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-c1">true</span>]]] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">a/b/c</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-k">function</span>() { <span class="pl-k">return</span> <span class="pl-en">rand</span>( <span class="pl-c1">1</span>, <span class="pl-c1">2</span> ); } ); <span class="pl-c">// true (value returned by closure is casted to boolean)</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">true</span> ); <span class="pl-c">// true (default value used)</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">''</span>] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// false (casted to boolean)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">null</span>] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// false (null is not scalar)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; [<span class="pl-c1">true</span>]] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// false (arrays are not scalar)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">#resource</span>'</span>] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// false (resources are not scalar)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-k">new</span> \<span class="pl-v">stdClass</span>] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// false (objects are not scalar)</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">bool</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-k">new</span> \<span class="pl-v">Exception</span>( <span class="pl-s">'<span class="pl-s">error</span>'</span> ) ); <span class="pl-c">// throws exception</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#cast">cast()</a> - Casts all entries to the passed type</li> <li><a href="#float">float()</a> - Returns an element by key and casts it to float if possible</li> <li><a href="#get">get()</a> - Returns an element from the map by key</li> <li><a href="#int">int()</a> - Returns an element by key and casts it to integer if possible</li> <li><a href="#string">string()</a> - Returns an element by key and casts it to string if possible</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">call()</h3><a id="user-content-call" class="anchor" aria-label="Permalink: call()" href="#call"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Calls the given method on all items and returns the result.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function call( string $name, array $params = [] ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> call( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>name</span>, <span class="pl-smi">array</span> <span class="pl-s1"><span class="pl-c1">$</span>params</span> = [] ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$name</code> Method name</li> <li>@param <strong>array&lt;mixed&gt;</strong> <code>$params</code> List of parameters</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with results from all elements</li> </ul> <p dir="auto">This method can call methods on the map entries that are also implemented by the map object itself and are therefore not reachable when using the magic <code>__call()</code> method. If some entries are not objects, they will be skipped.</p> <p dir="auto">The keys from the original map are preserved in the returned in the new map.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$item = new MyClass( ['myprop' =&gt; 'val'] ); // implements methods get() and toArray() Map::from( [$item, $item] )-&gt;call( 'get', ['myprop'] ); // ['val', 'val'] Map::from( [$item, $item] )-&gt;call( 'toArray' ); // [['myprop' =&gt; 'val'], ['myprop' =&gt; 'val']]"><pre><span class="pl-s1"><span class="pl-c1">$</span>item</span> = <span class="pl-k">new</span> <span class="pl-v">MyClass</span>( [<span class="pl-s">'<span class="pl-s">myprop</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">val</span>'</span>] ); <span class="pl-c">// implements methods get() and toArray()</span> Map::<span class="pl-en">from</span>( [<span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>item</span>] )-&gt;<span class="pl-en">call</span>( <span class="pl-s">'<span class="pl-s">get</span>'</span>, [<span class="pl-s">'<span class="pl-s">myprop</span>'</span>] ); <span class="pl-c">// ['val', 'val']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>item</span>] )-&gt;<span class="pl-en">call</span>( <span class="pl-s">'<span class="pl-s">toArray</span>'</span> ); <span class="pl-c">// [['myprop' =&gt; 'val'], ['myprop' =&gt; 'val']]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#__call">__call()</a> - Handles dynamic calls to custom methods for the class</li> <li><a href="#__callStatic">__callStatic()</a> - Handles static calls to custom methods for the class</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">cast()</h3><a id="user-content-cast" class="anchor" aria-label="Permalink: cast()" href="#cast"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Casts all entries to the passed type.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function cast( string $type = 'string' ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> cast( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>type</span> = <span class="pl-s">'<span class="pl-s">string</span>'</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$type</code> Type to cast the values to ("string", "bool", "int", "float", "array", "object")</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map with casted elements</li> </ul> <p dir="auto">Casting arrays and objects to scalar values won't return anything useful!</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [true, 1, 1.0, 'yes'] )-&gt;cast(); // ['1', '1', '1.0', 'yes'] Map::from( [true, 1, 1.0, 'yes'] )-&gt;cast( 'bool' ); // [true, true, true, true] Map::from( [true, 1, 1.0, 'yes'] )-&gt;cast( 'int' ); // [1, 1, 1, 0] Map::from( [true, 1, 1.0, 'yes'] )-&gt;cast( 'float' ); // [1.0, 1.0, 1.0, 0.0] Map::from( [new stdClass, new stdClass] )-&gt;cast( 'array' ); // [[], []] Map::from( [[], []] )-&gt;cast( 'object' ); // [new stdClass, new stdClass]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">true</span>, <span class="pl-c1">1</span>, <span class="pl-c1">1.0</span>, <span class="pl-s">'<span class="pl-s">yes</span>'</span>] )-&gt;<span class="pl-en">cast</span>(); <span class="pl-c">// ['1', '1', '1.0', 'yes']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">true</span>, <span class="pl-c1">1</span>, <span class="pl-c1">1.0</span>, <span class="pl-s">'<span class="pl-s">yes</span>'</span>] )-&gt;<span class="pl-en">cast</span>( <span class="pl-s">'<span class="pl-s">bool</span>'</span> ); <span class="pl-c">// [true, true, true, true]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">true</span>, <span class="pl-c1">1</span>, <span class="pl-c1">1.0</span>, <span class="pl-s">'<span class="pl-s">yes</span>'</span>] )-&gt;<span class="pl-en">cast</span>( <span class="pl-s">'<span class="pl-s">int</span>'</span> ); <span class="pl-c">// [1, 1, 1, 0]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">true</span>, <span class="pl-c1">1</span>, <span class="pl-c1">1.0</span>, <span class="pl-s">'<span class="pl-s">yes</span>'</span>] )-&gt;<span class="pl-en">cast</span>( <span class="pl-s">'<span class="pl-s">float</span>'</span> ); <span class="pl-c">// [1.0, 1.0, 1.0, 0.0]</span> Map::<span class="pl-en">from</span>( [<span class="pl-k">new</span> <span class="pl-v">stdClass</span>, <span class="pl-k">new</span> <span class="pl-v">stdClass</span>] )-&gt;<span class="pl-en">cast</span>( <span class="pl-s">'<span class="pl-s">array</span>'</span> ); <span class="pl-c">// [[], []]</span> Map::<span class="pl-en">from</span>( [[], []] )-&gt;<span class="pl-en">cast</span>( <span class="pl-s">'<span class="pl-s">object</span>'</span> ); <span class="pl-c">// [new stdClass, new stdClass]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#bool">bool()</a> - Returns an element by key and casts it to boolean if possible</li> <li><a href="#int">int()</a> - Returns an element by key and casts it to integer if possible</li> <li><a href="#float">float()</a> - Returns an element by key and casts it to float if possible</li> <li><a href="#string">string()</a> - Returns an element by key and casts it to string if possible</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">chunk()</h3><a id="user-content-chunk" class="anchor" aria-label="Permalink: chunk()" href="#chunk"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Chunks the map into arrays with the given number of elements.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function chunk( int $size, bool $preserve = false ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> chunk( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>size</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>preserve</span> = <span class="pl-c1">false</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$size</code> Maximum size of the sub-arrays</li> <li>@param <strong>bool</strong> <code>$preserve</code> Preserve keys in new map</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with elements chunked in sub-arrays</li> <li>@throws <strong>\InvalidArgumentException</strong> If size is smaller than 1</li> </ul> <p dir="auto">The last chunk may contain less elements than the given number.</p> <p dir="auto">The sub-arrays of the returned map are plain PHP arrays. If you need Map objects, then wrap them with <a href="#from">Map::from()</a> when you iterate over the map.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [0, 1, 2, 3, 4] )-&gt;chunk( 3 ); // [[0, 1, 2], [3, 4]] Map::from( ['a' =&gt; 0, 'b' =&gt; 1, 'c' =&gt; 2] )-&gt;chunk( 2 ); // [['a' =&gt; 0, 'b' =&gt; 1], ['c' =&gt; 2]]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span>, <span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>, <span class="pl-c1">4</span>] )-&gt;<span class="pl-en">chunk</span>( <span class="pl-c1">3</span> ); <span class="pl-c">// [[0, 1, 2], [3, 4]]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-c1">2</span>] )-&gt;<span class="pl-en">chunk</span>( <span class="pl-c1">2</span> ); <span class="pl-c">// [['a' =&gt; 0, 'b' =&gt; 1], ['c' =&gt; 2]]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#partition">partition()</a> - Breaks the list into the given number of groups</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">clear()</h3><a id="user-content-clear" class="anchor" aria-label="Permalink: clear()" href="#clear"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Removes all elements from the current map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function clear() : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> clear() : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [0, 1] )-&gt;clear(); // internal : []"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span>, <span class="pl-c1">1</span>] )-&gt;<span class="pl-en">clear</span>(); <span class="pl-c">// internal : []</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#except">except()</a> - Returns a new map without the passed element keys</li> <li><a href="#only">only()</a> - Returns only those elements specified by the keys</li> <li><a href="#reject">reject()</a> - Removes all matched elements</li> <li><a href="#remove">remove()</a> - Removes an element by key</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">clone()</h3><a id="user-content-clone" class="anchor" aria-label="Permalink: clone()" href="#clone"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Clones the map and all objects within.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function clone() : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> clone() : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with cloned objects</li> </ul> <p dir="auto">The objects within the Map are NOT the same as before but new cloned objects. This is different to <a href="#copy"><code>copy()</code></a>, which doesn't clone the objects within.</p> <p dir="auto">The keys are preserved using this method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [new \stdClass, new \stdClass] )-&gt;clone(); // [new \stdClass, new \stdClass]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-k">new</span> \<span class="pl-v">stdClass</span>, <span class="pl-k">new</span> \<span class="pl-v">stdClass</span>] )-&gt;<span class="pl-en">clone</span>(); <span class="pl-c">// [new \stdClass, new \stdClass]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#copy">copy()</a> - Creates a new copy</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">col()</h3><a id="user-content-col" class="anchor" aria-label="Permalink: col()" href="#col"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the values of a single column/property from an array of arrays or list of elements in a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function col( string $valuecol = null, string $indexcol = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> col( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>valuecol</span> = <span class="pl-c1">null</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>indexcol</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string|null</strong> <code>$valuecol</code> Name or path of the value property</li> <li>@param <strong>string|null</strong> <code>$indexcol</code> Name or path of the index property</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with mapped entries</li> </ul> <p dir="auto">If $indexcol is omitted, it's value is NULL or not set, the result will be indexed from 0-n. Items with the same value for $indexcol will overwrite previous items and only the last one will be part of the resulting map.</p> <p dir="auto">This does also work to map values from multi-dimensional arrays by passing the keys of the arrays separated by the delimiter ("/" by default), e.g. <code>key1/key2/key3</code> to get <code>val</code> from <code>['key1' =&gt; ['key2' =&gt; ['key3' =&gt; 'val']]]</code>. The same applies to public properties of objects or objects implementing <code>__isset()</code> and <code>__get()</code> methods.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [['id' =&gt; 'i1', 'val' =&gt; 'v1'], ['id' =&gt; 'i2', 'val' =&gt; 'v2']] )-&gt;col( 'val' ); // ['v1', 'v2'] Map::from( [['id' =&gt; 'i1', 'val' =&gt; 'v1'], ['id' =&gt; 'i2', 'val' =&gt; 'v2']] )-&gt;col( 'val', 'id' ); // ['i1' =&gt; 'v1', 'i2' =&gt; 'v2'] Map::from( [['id' =&gt; 'i1', 'val' =&gt; 'v1'], ['id' =&gt; 'i2', 'val' =&gt; 'v2']] )-&gt;col( null, 'id' ); // ['i1' =&gt; ['id' =&gt; 'i1', 'val' =&gt; 'v1'], 'i2' =&gt; ['id' =&gt; 'i2', 'val' =&gt; 'v2']] Map::from( [['id' =&gt; 'ix', 'val' =&gt; 'v1'], ['id' =&gt; 'ix', 'val' =&gt; 'v2']] )-&gt;col( null, 'id' ); // ['ix' =&gt; ['id' =&gt; 'ix', 'val' =&gt; 'v2']] Map::from( [['foo' =&gt; ['bar' =&gt; 'one', 'baz' =&gt; 'two']]] )-&gt;col( 'foo/baz', 'foo/bar' ); // ['one' =&gt; 'two'] Map::from( [['foo' =&gt; ['bar' =&gt; 'one']]] )-&gt;col( 'foo/baz', 'foo/bar' ); // ['one' =&gt; null] Map::from( [['foo' =&gt; ['baz' =&gt; 'two']]] )-&gt;col( 'foo/baz', 'foo/bar' ); // ['two']"><pre>Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">i1</span>'</span>, <span class="pl-s">'<span class="pl-s">val</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">v1</span>'</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">i2</span>'</span>, <span class="pl-s">'<span class="pl-s">val</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">v2</span>'</span>]] )-&gt;<span class="pl-en">col</span>( <span class="pl-s">'<span class="pl-s">val</span>'</span> ); <span class="pl-c">// ['v1', 'v2']</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">i1</span>'</span>, <span class="pl-s">'<span class="pl-s">val</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">v1</span>'</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">i2</span>'</span>, <span class="pl-s">'<span class="pl-s">val</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">v2</span>'</span>]] )-&gt;<span class="pl-en">col</span>( <span class="pl-s">'<span class="pl-s">val</span>'</span>, <span class="pl-s">'<span class="pl-s">id</span>'</span> ); <span class="pl-c">// ['i1' =&gt; 'v1', 'i2' =&gt; 'v2']</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">i1</span>'</span>, <span class="pl-s">'<span class="pl-s">val</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">v1</span>'</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">i2</span>'</span>, <span class="pl-s">'<span class="pl-s">val</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">v2</span>'</span>]] )-&gt;<span class="pl-en">col</span>( <span class="pl-c1">null</span>, <span class="pl-s">'<span class="pl-s">id</span>'</span> ); <span class="pl-c">// ['i1' =&gt; ['id' =&gt; 'i1', 'val' =&gt; 'v1'], 'i2' =&gt; ['id' =&gt; 'i2', 'val' =&gt; 'v2']]</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">ix</span>'</span>, <span class="pl-s">'<span class="pl-s">val</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">v1</span>'</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">ix</span>'</span>, <span class="pl-s">'<span class="pl-s">val</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">v2</span>'</span>]] )-&gt;<span class="pl-en">col</span>( <span class="pl-c1">null</span>, <span class="pl-s">'<span class="pl-s">id</span>'</span> ); <span class="pl-c">// ['ix' =&gt; ['id' =&gt; 'ix', 'val' =&gt; 'v2']]</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">foo</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">bar</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">one</span>'</span>, <span class="pl-s">'<span class="pl-s">baz</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">two</span>'</span>]]] )-&gt;<span class="pl-en">col</span>( <span class="pl-s">'<span class="pl-s">foo/baz</span>'</span>, <span class="pl-s">'<span class="pl-s">foo/bar</span>'</span> ); <span class="pl-c">// ['one' =&gt; 'two']</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">foo</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">bar</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">one</span>'</span>]]] )-&gt;<span class="pl-en">col</span>( <span class="pl-s">'<span class="pl-s">foo/baz</span>'</span>, <span class="pl-s">'<span class="pl-s">foo/bar</span>'</span> ); <span class="pl-c">// ['one' =&gt; null]</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">foo</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">baz</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">two</span>'</span>]]] )-&gt;<span class="pl-en">col</span>( <span class="pl-s">'<span class="pl-s">foo/baz</span>'</span>, <span class="pl-s">'<span class="pl-s">foo/bar</span>'</span> ); <span class="pl-c">// ['two']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#map">map()</a> - Applies a callback to each element and returns the results</li> <li><a href="#pluck">pluck()</a> - Creates a key/value mapping (alias)</li> <li><a href="#pluck">rekey()</a> - Changes the keys according to the passed function</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">collapse()</h3><a id="user-content-collapse" class="anchor" aria-label="Permalink: collapse()" href="#collapse"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Collapses all sub-array elements recursively to a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function collapse( int $depth = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> collapse( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>depth</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int|null</strong> <code>$depth</code> Number of levels to collapse for multi-dimensional arrays or NULL for all</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with all sub-array elements added into it recursively, up to the specified depth</li> </ul> <p dir="auto">The keys are preserved and already existing elements will be overwritten. This is also true for numeric keys! This method is similar than <a href="#flat">flat()</a> but replaces already existing elements.</p> <p dir="auto">A value smaller than 1 for depth will return the same map elements. Collapsing does also work if elements implement the "Traversable" interface (which the Map object does).</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [0 =&gt; ['a' =&gt; 0, 'b' =&gt; 1], 1 =&gt; ['c' =&gt; 2, 'd' =&gt; 3]] )-&gt;collapse(); // ['a' =&gt; 0, 'b' =&gt; 1, 'c' =&gt; 2, 'd' =&gt; 3] Map::from( [0 =&gt; ['a' =&gt; 0, 'b' =&gt; 1], 1 =&gt; ['a' =&gt; 2]] )-&gt;collapse(); // ['a' =&gt; 2, 'b' =&gt; 1] Map::from( [0 =&gt; [0 =&gt; 0, 1 =&gt; 1], 1 =&gt; [0 =&gt; ['a' =&gt; 2, 0 =&gt; 3], 1 =&gt; 4]] )-&gt;collapse(); // [0 =&gt; 3, 1 =&gt; 4, 'a' =&gt; 2] Map::from( [0 =&gt; [0 =&gt; 0, 'a' =&gt; 1], 1 =&gt; [0 =&gt; ['b' =&gt; 2, 0 =&gt; 3], 1 =&gt; 4]] )-&gt;collapse( 1 ); // [0 =&gt; ['b' =&gt; 2, 0 =&gt; 3], 1 =&gt; 4, 'a' =&gt; 1] Map::from( [0 =&gt; [0 =&gt; 0, 'a' =&gt; 1], 1 =&gt; Map::from( [0 =&gt; ['b' =&gt; 2, 0 =&gt; 3], 1 =&gt; 4] )] )-&gt;collapse(); // [0 =&gt; 3, 'a' =&gt; 1, 'b' =&gt; 2, 1 =&gt; 4]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">1</span>], <span class="pl-c1">1</span> =&gt; [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">d</span>'</span> =&gt; <span class="pl-c1">3</span>]] )-&gt;<span class="pl-en">collapse</span>(); <span class="pl-c">// ['a' =&gt; 0, 'b' =&gt; 1, 'c' =&gt; 2, 'd' =&gt; 3]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">1</span>], <span class="pl-c1">1</span> =&gt; [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">2</span>]] )-&gt;<span class="pl-en">collapse</span>(); <span class="pl-c">// ['a' =&gt; 2, 'b' =&gt; 1]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; [<span class="pl-c1">0</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-c1">1</span>], <span class="pl-c1">1</span> =&gt; [<span class="pl-c1">0</span> =&gt; [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-c1">0</span> =&gt; <span class="pl-c1">3</span>], <span class="pl-c1">1</span> =&gt; <span class="pl-c1">4</span>]] )-&gt;<span class="pl-en">collapse</span>(); <span class="pl-c">// [0 =&gt; 3, 1 =&gt; 4, 'a' =&gt; 2]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; [<span class="pl-c1">0</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>], <span class="pl-c1">1</span> =&gt; [<span class="pl-c1">0</span> =&gt; [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-c1">0</span> =&gt; <span class="pl-c1">3</span>], <span class="pl-c1">1</span> =&gt; <span class="pl-c1">4</span>]] )-&gt;<span class="pl-en">collapse</span>( <span class="pl-c1">1</span> ); <span class="pl-c">// [0 =&gt; ['b' =&gt; 2, 0 =&gt; 3], 1 =&gt; 4, 'a' =&gt; 1]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; [<span class="pl-c1">0</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>], <span class="pl-c1">1</span> =&gt; Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-c1">0</span> =&gt; <span class="pl-c1">3</span>], <span class="pl-c1">1</span> =&gt; <span class="pl-c1">4</span>] )] )-&gt;<span class="pl-en">collapse</span>(); <span class="pl-c">// [0 =&gt; 3, 'a' =&gt; 1, 'b' =&gt; 2, 1 =&gt; 4]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#flat">flat()</a> - Flattens multi-dimensional elements without overwriting elements</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">combine()</h3><a id="user-content-combine" class="anchor" aria-label="Permalink: combine()" href="#combine"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Combines the values of the map as keys with the passed elements as values.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function combine( iterable $values ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> combine( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>values</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string,mixed&gt;</strong> <code>$values</code> Values of the new map</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['name', 'age'] )-&gt;combine( ['Tom', 29] ); // ['name' =&gt; 'Tom', 'age' =&gt; 29]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">name</span>'</span>, <span class="pl-s">'<span class="pl-s">age</span>'</span>] )-&gt;<span class="pl-en">combine</span>( [<span class="pl-s">'<span class="pl-s">Tom</span>'</span>, <span class="pl-c1">29</span>] ); <span class="pl-c">// ['name' =&gt; 'Tom', 'age' =&gt; 29]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#zip">zip()</a> - Merges the values of all arrays at the corresponding index</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">concat()</h3><a id="user-content-concat" class="anchor" aria-label="Permalink: concat()" href="#concat"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Pushs all of the given elements onto the map without creating a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function concat( iterable $elements ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> concat( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>elements</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string,mixed&gt;</strong> <code>$elements</code> List of elements</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The keys of the passed elements are NOT preserved!</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['foo'] )-&gt;concat( ['bar'] ); // ['foo', 'bar'] Map::from( ['foo'] )-&gt;concat( new Map( ['bar' =&gt; 'baz'] ) ); // ['foo', 'baz']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>] )-&gt;<span class="pl-en">concat</span>( [<span class="pl-s">'<span class="pl-s">bar</span>'</span>] ); <span class="pl-c">// ['foo', 'bar']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>] )-&gt;<span class="pl-en">concat</span>( <span class="pl-k">new</span> <span class="pl-v">Map</span>( [<span class="pl-s">'<span class="pl-s">bar</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">baz</span>'</span>] ) ); <span class="pl-c">// ['foo', 'baz']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#merge">merge()</a> - Merges the map with the given elements without returning a new map</li> <li><a href="#union">union()</a> - Builds a union of the elements and the given elements without returning a new map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">contains()</h3><a id="user-content-contains" class="anchor" aria-label="Permalink: contains()" href="#contains"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Determines if an item exists in the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function contains( $key, string $operator = null, $value = null ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> contains( <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>operator</span> = <span class="pl-c1">null</span>, <span class="pl-s1"><span class="pl-c1">$</span>value</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi">bool</span></pre></div> <p dir="auto">This method combines the power of the <code>where()</code> method with <code>some()</code> to check if the map contains at least one of the passed values or conditions.</p> <ul dir="auto"> <li>@param <strong>\Closure|iterable|mixed</strong> <code>$values</code> Anonymous function with (item, key) parameter, element or list of elements to test against</li> <li>@param <strong>string|null</strong> <code>$op</code> Operator used for comparison</li> <li>@param <strong>mixed</strong> <code>$value</code> Value used for comparison</li> <li>@return <strong>bool</strong> TRUE if at least one element is available in map, FALSE if the map contains none of them</li> </ul> <p dir="auto">Check the <a href="#where"><code>where()</code></a>] method for available operators.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;contains( 'a' ); // true Map::from( ['a', 'b'] )-&gt;contains( ['a', 'c'] ); // true Map::from( ['a', 'b'] )-&gt;contains( function( $item, $key ) { return $item === 'a' } ); // true Map::from( [['type' =&gt; 'name']] )-&gt;contains( 'type', 'name' ); // true Map::from( [['type' =&gt; 'name']] )-&gt;contains( 'type', '!=', 'name' ); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">contains</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">contains</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;contains( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>item</span> === <span class="pl-s">'<span class="pl-s">a</span>'</span> } ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">type</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">name</span>'</span>]] )-&gt;<span class="pl-en">contains</span>( <span class="pl-s">'<span class="pl-s">type</span>'</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">type</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">name</span>'</span>]] )-&gt;<span class="pl-en">contains</span>( <span class="pl-s">'<span class="pl-s">type</span>'</span>, <span class="pl-s">'<span class="pl-s">!=</span>'</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> ); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#in">in()</a> - Tests if element is included</li> <li><a href="#includes">includes()</a> - Tests if element is included</li> <li><a href="#where">where()</a> - Filters the list of elements by a given condition</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">copy()</h3><a id="user-content-copy" class="anchor" aria-label="Permalink: copy()" href="#copy"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Creates a new map with the same elements.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function copy() : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> copy() : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">Both maps share the same array until one of the map objects modifies the array. Then, the array is copied and the copy is modfied (copy on write).</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$m = Map::from( ['foo', 'bar'] ); $m2 = $m-&gt;copy(); // internal: ['foo', 'bar'] both two maps"><pre><span class="pl-s1"><span class="pl-c1">$</span>m</span> = Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">bar</span>'</span>] ); <span class="pl-s1"><span class="pl-c1">$</span>m2</span> = <span class="pl-s1"><span class="pl-c1">$</span>m</span>-&gt;<span class="pl-en">copy</span>(); <span class="pl-c">// internal: ['foo', 'bar'] both two maps</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#clone">clone()</a> - Clones the map and all objects within</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">count()</h3><a id="user-content-count" class="anchor" aria-label="Permalink: count()" href="#count"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Counts the number of elements in the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function count() : int"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> count() : <span class="pl-smi">int</span></pre></div> <ul dir="auto"> <li>@return <strong>int</strong> Number of elements</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['foo', 'bar'] )-&gt;count(); // 2"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">count</span>(); <span class="pl-c">// 2</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#avg">avg()</a> - Returns the average of all integer and float values in the map</li> <li><a href="#countby">countBy()</a> - Counts how often the same values are in the map</li> <li><a href="#max">max()</a> - Returns the maximum value of all elements</li> <li><a href="#min">min()</a> - Returns the minium value of all elements</li> <li><a href="#percentage">percentage()</a> - Returns the percentage of all elements passing the test</li> <li><a href="#sum">sum()</a> - Returns the sum of all values in the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">countBy()</h3><a id="user-content-countby" class="anchor" aria-label="Permalink: countBy()" href="#countby"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Counts how often the same values are in the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function countBy( $col = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> countBy( <span class="pl-s1"><span class="pl-c1">$</span>col</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|string|null</strong> <code>$col</code> Key as "key1/key2/key3" or closure with (value, key) parameters returning the values for counting</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with values as keys and their count as value</li> </ul> <p dir="auto">This does also work for multi-dimensional arrays by passing the keys of the arrays separated by the delimiter ("/" by default), e.g. "key1/key2/key3" to get "val" from ['key1' =&gt; ['key2' =&gt; ['key3' =&gt; 'val']]]. The same applies to public properties of objects or objects implementing __isset() and __get() methods.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [1, 'foo', 2, 'foo', 1] )-&gt;countBy(); // [1 =&gt; 2, 'foo' =&gt; 2, 2 =&gt; 1] Map::from( [1.11, 3.33, 3.33, 9.99] )-&gt;countBy(); // ['1.11' =&gt; 1, '3.33' =&gt; 2, '9.99' =&gt; 1] Map::from( [['i' =&gt; ['p' =&gt; 1.11]], ['i' =&gt; ['p' =&gt; 3.33]], ['i' =&gt; ['p' =&gt; 3.33]]] )-&gt;countBy( 'i/p' ); // ['1.11' =&gt; 1, '3.33' =&gt; 2] Map::from( ['a@gmail.com', 'b@yahoo.com', 'c@gmail.com'] )-&gt;countBy( function( $email ) { return substr( strrchr( $email, '@' ), 1 ); } ); // ['gmail.com' =&gt; 2, 'yahoo.com' =&gt; 1]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-c1">1</span>] )-&gt;<span class="pl-en">countBy</span>(); <span class="pl-c">// [1 =&gt; 2, 'foo' =&gt; 2, 2 =&gt; 1]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1.11</span>, <span class="pl-c1">3.33</span>, <span class="pl-c1">3.33</span>, <span class="pl-c1">9.99</span>] )-&gt;<span class="pl-en">countBy</span>(); <span class="pl-c">// ['1.11' =&gt; 1, '3.33' =&gt; 2, '9.99' =&gt; 1]</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">1.11</span>]], [<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">3.33</span>]], [<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">3.33</span>]]] )-&gt;<span class="pl-en">countBy</span>( <span class="pl-s">'<span class="pl-s">i/p</span>'</span> ); <span class="pl-c">// ['1.11' =&gt; 1, '3.33' =&gt; 2]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a@gmail.com</span>'</span>, <span class="pl-s">'<span class="pl-s">b@yahoo.com</span>'</span>, <span class="pl-s">'<span class="pl-s">c@gmail.com</span>'</span>] )-&gt;<span class="pl-en">countBy</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>email</span> ) { <span class="pl-k">return</span> <span class="pl-en">substr</span>( <span class="pl-en">strrchr</span>( <span class="pl-s1"><span class="pl-c1">$</span>email</span>, <span class="pl-s">'<span class="pl-s">@</span>'</span> ), <span class="pl-c1">1</span> ); } ); <span class="pl-c">// ['gmail.com' =&gt; 2, 'yahoo.com' =&gt; 1]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#avg">avg()</a> - Returns the average of all integer and float values in the map</li> <li><a href="#groupby">groupBy()</a> - Groups associative array elements or objects by the passed key or closure</li> <li><a href="#max">max()</a> - Returns the maximum value of all elements</li> <li><a href="#min">min()</a> - Returns the minium value of all elements</li> <li><a href="#percentage">percentage()</a> - Returns the percentage of all elements passing the test</li> <li><a href="#sum">sum()</a> - Returns the sum of all values in the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">dd()</h3><a id="user-content-dd" class="anchor" aria-label="Permalink: dd()" href="#dd"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Dumps the map content and terminates the script.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function dd( callable $callback = null ) : void"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> dd( <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi">void</span></pre></div> <ul dir="auto"> <li>@param <strong>callable|null</strong> <code>$callback</code> Function receiving the map elements as parameter (optional)</li> </ul> <p dir="auto">The <code>dd()</code> method is very helpful to see what are the map elements passed between two map methods in a method call chain. It stops execution of the script afterwards to avoid further output.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'foo', 'b' =&gt; 'bar'] )-&gt;sort()-&gt;dd()-&gt;first(); /* Array ( [0] =&gt; bar [1] =&gt; foo ) */"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">sort</span>()-&gt;<span class="pl-en">dd</span>()-&gt;<span class="pl-en">first</span>(); <span class="pl-c">/*</span> <span class="pl-c">Array</span> <span class="pl-c">(</span> <span class="pl-c"> [0] =&gt; bar</span> <span class="pl-c"> [1] =&gt; foo</span> <span class="pl-c">)</span> <span class="pl-c">*/</span></pre></div> <p dir="auto">The <code>first()</code> method isn't executed at all.</p> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">delimiter()</h3><a id="user-content-delimiter" class="anchor" aria-label="Permalink: delimiter()" href="#delimiter"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sets or returns the seperator for paths to values in multi-dimensional arrays or objects.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public static function delimiter( ?string $char = null ) : string"><pre><span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">function</span> delimiter( ?<span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>char</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi">string</span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$char</code> Separator character, e.g. "." for "key.to.value" instaed of "key/to/value"</li> <li>@return <strong>string</strong> Separator used up to now</li> </ul> <p dir="auto">The static method only changes the separator for new maps created afterwards. Already existing maps will continue to use the previous separator. To change the separator of an existing map, use the <a href="#sep">sep()</a> method instead.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::delimiter( '.' ); // '/' Map::from( ['foo' =&gt; ['bar' =&gt; 'baz']] )-&gt;get( 'foo.bar' ); // 'baz'"><pre>Map::<span class="pl-en">delimiter</span>( <span class="pl-s">'<span class="pl-s">.</span>'</span> ); <span class="pl-c">// '/'</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">bar</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">baz</span>'</span>]] )-&gt;<span class="pl-en">get</span>( <span class="pl-s">'<span class="pl-s">foo.bar</span>'</span> ); <span class="pl-c">// 'baz'</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#sep">sep()</a> - Sets the seperator for paths to values in multi-dimensional arrays or objects</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">diff()</h3><a id="user-content-diff" class="anchor" aria-label="Permalink: diff()" href="#diff"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the keys/values in the map whose values are not present in the passed elements in a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function diff( iterable $elements, callable $callback = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> diff( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>elements</span>, <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string,mixed&gt;</strong> <code>$elements</code> List of elements</li> <li>@param <strong>callable|null</strong> <code>$callback</code> Function with (valueA, valueB) parameters and returns -1 (&lt;), 0 (=) and 1 (&gt;)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'foo', 'b' =&gt; 'bar'] )-&gt;diff( ['bar'] ); // ['a' =&gt; 'foo']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">diff</span>( [<span class="pl-s">'<span class="pl-s">bar</span>'</span>] ); <span class="pl-c">// ['a' =&gt; 'foo']</span></pre></div> <p dir="auto">If a callback is passed, the given function will be used to compare the values. The function must accept two parameters (value A and B) and must return -1 if value A is smaller than value B, 0 if both are equal and 1 if value A is greater than value B. Both, a method name and an anonymous function can be passed:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [0 =&gt; 'a'] )-&gt;diff( [0 =&gt; 'A'], 'strcasecmp' ); // [] Map::from( ['b' =&gt; 'a'] )-&gt;diff( ['B' =&gt; 'A'], 'strcasecmp' ); // [] Map::from( ['b' =&gt; 'a'] )-&gt;diff( ['c' =&gt; 'A'], function( $valA, $valB ) { return strtolower( $valA ) &lt;=&gt; strtolower( $valB ); } ); // []"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">diff</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>], <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// []</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">diff</span>( [<span class="pl-s">'<span class="pl-s">B</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>], <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// []</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">diff</span>( [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>], <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>valA</span>, <span class="pl-s1"><span class="pl-c1">$</span>valB</span> ) { <span class="pl-k">return</span> <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>valA</span> ) &lt;=&gt; <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>valB</span> ); } ); <span class="pl-c">// []</span></pre></div> <p dir="auto">All examples will return an empty map because both contain the same values when compared case insensitive.</p> <p dir="auto">The keys are preserved using this method.</p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#diffassoc">diffAssoc()</a> - Returns the keys/values in the map whose keys AND values are not present in the passed elements in a new map</li> <li><a href="#diffkeys">diffKeys()</a> - Returns the elements missing in the given list by keys</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">diffAssoc()</h3><a id="user-content-diffassoc" class="anchor" aria-label="Permalink: diffAssoc()" href="#diffassoc"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the keys/values in the map whose keys AND values are not present in the passed elements in a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function diffAssoc( iterable $elements, callable $callback = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> diffAssoc( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>elements</span>, <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string,mixed&gt;</strong> <code>$elements</code> List of elements</li> <li>@param <strong>callable|null</strong> <code>$callback</code> Function with (valueA, valueB) parameters and returns -1 (&lt;), 0 (=) and 1 (&gt;)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'foo', 'b' =&gt; 'bar'] )-&gt;diffAssoc( new Map( ['foo', 'b' =&gt; 'bar'] ) ); // ['a' =&gt; 'foo']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">diffAssoc</span>( <span class="pl-k">new</span> <span class="pl-v">Map</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] ) ); <span class="pl-c">// ['a' =&gt; 'foo']</span></pre></div> <p dir="auto">If a callback is passed, the given function will be used to compare the values. The function must accept two parameters (valA, valB) and must return -1 if value A is smaller than value B, 0 if both are equal and 1 if value A is greater than value B. Both, a method name and an anonymous function can be passed:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [0 =&gt; 'a'] )-&gt;diffAssoc( [0 =&gt; 'A'], 'strcasecmp' ); // [] Map::from( ['b' =&gt; 'a'] )-&gt;diffAssoc( ['B' =&gt; 'A'], 'strcasecmp' ); // [] Map::from( ['b' =&gt; 'a'] )-&gt;diffAssoc( ['c' =&gt; 'A'], function( $valA, $valB ) { return strtolower( $valA ) &lt;=&gt; strtolower( $valB ); } ); // ['b' =&gt; 'a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">diffAssoc</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>], <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// []</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">diffAssoc</span>( [<span class="pl-s">'<span class="pl-s">B</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>], <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// []</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">diffAssoc</span>( [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>], <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>valA</span>, <span class="pl-s1"><span class="pl-c1">$</span>valB</span> ) { <span class="pl-k">return</span> <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>valA</span> ) &lt;=&gt; <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>valB</span> ); } ); <span class="pl-c">// ['b' =&gt; 'a']</span></pre></div> <p dir="auto">The first and second example will return an empty map because both contain the same values when compared case insensitive. In the third example, the keys doesn't match ("b" vs. "c").</p> <p dir="auto">The keys are preserved using this method.</p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#diff">diff()</a> - Returns the keys/values in the map whose values are not present in the passed elements in a new map a new map</li> <li><a href="#diffkeys">diffKeys()</a> - Returns the elements missing in the given list by keys</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">diffKeys()</h3><a id="user-content-diffkeys" class="anchor" aria-label="Permalink: diffKeys()" href="#diffkeys"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the key/value pairs from the map whose keys are not present in the passed elements in a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function diffKeys( iterable $elements, callable $callback = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> diffKeys( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>elements</span>, <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string,mixed&gt;</strong> <code>$elements</code> List of elements</li> <li>@param <strong>callable|null</strong> <code>$callback</code> Function with (keyA, keyB) parameters and returns -1 (&lt;), 0 (=) and 1 (&gt;)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'foo', 'b' =&gt; 'bar'] )-&gt;diffKeys( new Map( ['foo', 'b' =&gt; 'baz'] ) ); // ['a' =&gt; 'foo']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">diffKeys</span>( <span class="pl-k">new</span> <span class="pl-v">Map</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">baz</span>'</span>] ) ); <span class="pl-c">// ['a' =&gt; 'foo']</span></pre></div> <p dir="auto">If a callback is passed, the given function will be used to compare the keys. The function must accept two parameters (key A and B) and must return -1 if key A is smaller than key B, 0 if both are equal and 1 if key A is greater than key B. Both, a method name and an anonymous function can be passed:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [0 =&gt; 'a'] )-&gt;diffKeys( [0 =&gt; 'A'], 'strcasecmp' ); // [] Map::from( ['b' =&gt; 'a'] )-&gt;diffKeys( ['B' =&gt; 'X'], 'strcasecmp' ); // [] Map::from( ['b' =&gt; 'a'] )-&gt;diffKeys( ['c' =&gt; 'a'], function( $keyA, $keyB ) { return strtolower( $keyA ) &lt;=&gt; strtolower( $keyB ); } ); // ['b' =&gt; 'a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">diffKeys</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>], <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// []</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">diffKeys</span>( [<span class="pl-s">'<span class="pl-s">B</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">X</span>'</span>], <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// []</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">diffKeys</span>( [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>], <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>keyA</span>, <span class="pl-s1"><span class="pl-c1">$</span>keyB</span> ) { <span class="pl-k">return</span> <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>keyA</span> ) &lt;=&gt; <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>keyB</span> ); } ); <span class="pl-c">// ['b' =&gt; 'a']</span></pre></div> <p dir="auto">The first and second example will return an empty map because both contain the same keys when compared case insensitive. The third example will return ['b' =&gt; 'a'] because the keys doesn't match ("b" vs. "c").</p> <p dir="auto">The keys are preserved using this method.</p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#diff">diff()</a> - Returns the keys/values in the map whose values are not present in the passed elements in a new map</li> <li><a href="#diffassoc">diffAssoc()</a> - Returns the keys/values in the map whose keys AND values are not present in the passed elements in a new map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">dump()</h3><a id="user-content-dump" class="anchor" aria-label="Permalink: dump()" href="#dump"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Dumps the map content using the given function (print_r by default).</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function dump( callable $callback = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> dump( <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>callable|null</strong> <code>$callback</code> Function receiving the map elements as parameter (optional)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Same map for fluid interface</li> </ul> <p dir="auto">The <code>dump()</code> method is very helpful to see what are the map elements passed between two map methods in a method call chain.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'foo', 'b' =&gt; 'bar'] )-&gt;dump()-&gt;asort()-&gt;dump( 'var_dump' ); /* Array ( [a] =&gt; foo [b] =&gt; bar ) array(1) { [&quot;b&quot;]=&gt; string(3) &quot;bar&quot; [&quot;a&quot;]=&gt; string(3) &quot;foo&quot; } */"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">dump</span>()-&gt;<span class="pl-en">asort</span>()-&gt;<span class="pl-en">dump</span>( <span class="pl-s">'<span class="pl-s">var_dump</span>'</span> ); <span class="pl-c">/*</span> <span class="pl-c">Array</span> <span class="pl-c">(</span> <span class="pl-c"> [a] =&gt; foo</span> <span class="pl-c"> [b] =&gt; bar</span> <span class="pl-c">)</span> <span class="pl-c"></span> <span class="pl-c">array(1) {</span> <span class="pl-c"> ["b"]=&gt;</span> <span class="pl-c"> string(3) "bar"</span> <span class="pl-c"> ["a"]=&gt;</span> <span class="pl-c"> string(3) "foo"</span> <span class="pl-c">}</span> <span class="pl-c">*/</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">duplicates()</h3><a id="user-content-duplicates" class="anchor" aria-label="Permalink: duplicates()" href="#duplicates"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the duplicate values from the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function duplicates( $col = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> duplicates( <span class="pl-s1"><span class="pl-c1">$</span>col</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|string|null</strong> <code>$col</code> Key, path of the nested array or anonymous function with ($item, $key) parameters returning the value for comparison</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">For nested arrays, you have to pass the name of the column of the nested array which should be used to check for duplicates.</p> <p dir="auto">This does also work to map values from multi-dimensional arrays by passing the keys of the arrays separated by the delimiter ("/" by default), e.g. <code>key1/key2/key3</code> to get <code>val</code> from <code>['key1' =&gt; ['key2' =&gt; ['key3' =&gt; 'val']]]</code>. The same applies to public properties of objects or objects implementing <code>__isset()</code> and <code>__get()</code> methods.</p> <p dir="auto">The keys in the result map are preserved.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [1, 2, '1', 3] )-&gt;duplicates() // [2 =&gt; '1'] Map::from( [['p' =&gt; '1'], ['p' =&gt; 1], ['p' =&gt; 2]] )-&gt;duplicates( 'p' ) // [1 =&gt; ['p' =&gt; 1]] Map::from( [['i' =&gt; ['p' =&gt; '1']], ['i' =&gt; ['p' =&gt; 1]]] )-&gt;duplicates( 'i/p' ) // [1 =&gt; ['i' =&gt; ['p' =&gt; 1]]] Map::from( [['i' =&gt; ['p' =&gt; '1']], ['i' =&gt; ['p' =&gt; 1]]] )-&gt;unique( fn( $item, $key ) =&gt; $item['i']['p'] ); // [1 =&gt; ['i' =&gt; ['p' =&gt; 1]]]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">1</span>'</span>, <span class="pl-c1">3</span>] )-&gt;<span class="pl-en">duplicates</span>() <span class="pl-c">// [2 =&gt; '1']</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">1</span>'</span>], [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">1</span>], [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">2</span>]] )-&gt;<span class="pl-en">duplicates</span>( <span class="pl-s">'<span class="pl-s">p</span>'</span> ) <span class="pl-c">// [1 =&gt; ['p' =&gt; 1]]</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">1</span>'</span>]], [<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">1</span>]]] )-&gt;<span class="pl-en">duplicates</span>( <span class="pl-s">'<span class="pl-s">i/p</span>'</span> ) <span class="pl-c">// [1 =&gt; ['i' =&gt; ['p' =&gt; 1]]]</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">1</span>'</span>]], [<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">1</span>]]] )-&gt;<span class="pl-en">unique</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>item</span>[<span class="pl-s">'<span class="pl-s">i</span>'</span>][<span class="pl-s">'<span class="pl-s">p</span>'</span>] ); <span class="pl-c">// [1 =&gt; ['i' =&gt; ['p' =&gt; 1]]]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#reject">reject()</a> - Removes all matched elements</li> <li><a href="#unique">unique()</a> - Returns only unique elements from the map in a new map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">each()</h3><a id="user-content-each" class="anchor" aria-label="Permalink: each()" href="#each"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Executes a callback over each entry until FALSE is returned.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function each( \Closure $callback ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> each( <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure</strong> <code>$callback</code> Function with (value, key) parameters and returns TRUE/FALSE</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Same map for fluid interface</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$result = []; Map::from( [0 =&gt; 'a', 1 =&gt; 'b'] )-&gt;each( function( $value, $key ) use ( &amp;$result ) { $result[$key] = strtoupper( $value ); return false; } ); // $result = [0 =&gt; 'A']"><pre><span class="pl-s1"><span class="pl-c1">$</span>result</span> = []; Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">each</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) <span class="pl-k">use</span> ( &amp;<span class="pl-s1"><span class="pl-c1">$</span>result</span> ) { <span class="pl-s1"><span class="pl-c1">$</span>result</span>[<span class="pl-s1"><span class="pl-c1">$</span>key</span>] = <span class="pl-en">strtoupper</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span> ); <span class="pl-k">return</span> <span class="pl-c1">false</span>; } ); <span class="pl-c">// $result = [0 =&gt; 'A']</span></pre></div> <p dir="auto">The <code>$result</code> array will contain <code>[0 =&gt; 'A']</code> because FALSE is returned after the first entry and all other entries are then skipped.</p> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">empty()</h3><a id="user-content-empty" class="anchor" aria-label="Permalink: empty()" href="#empty"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Determines if the map is empty or not.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function empty() : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> empty() : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@return <strong>bool</strong> TRUE if map is empty, FALSE if not</li> </ul> <p dir="auto">The method is equivalent to isEmpty().</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [] )-&gt;empty(); // true Map::from( ['a'] )-&gt;empty(); // false"><pre>Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">empty</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">empty</span>(); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#isempty">isEmpty()</a> - Determines if the map is empty or not</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">equals()</h3><a id="user-content-equals" class="anchor" aria-label="Permalink: equals()" href="#equals"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if the passed elements are equal to the elements in the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function equals( iterable $elements ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> equals( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>elements</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string,mixed&gt;</strong> <code>$elements</code> List of elements to test against</li> <li>@return <strong>bool</strong> TRUE if both are equal, FALSE if not</li> </ul> <p dir="auto">The method differs to <a href="#is">is()</a> in the fact that it doesn't care about the keys by default. The elements are only loosely compared and the keys are ignored.</p> <p dir="auto">Values are compared by their string values:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="(string) $item1 === (string) $item2"><pre>(<span class="pl-smi">string</span>) <span class="pl-s1"><span class="pl-c1">$</span>item1</span> === (<span class="pl-smi">string</span>) <span class="pl-s1"><span class="pl-c1">$</span>item2</span></pre></div> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a'] )-&gt;equals( ['a', 'b'] ); // false Map::from( ['a', 'b'] )-&gt;equals( ['b'] ); // false Map::from( ['a', 'b'] )-&gt;equals( ['b', 'a'] ); // true"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">equals</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">equals</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span>] ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">equals</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span>] ); <span class="pl-c">// true</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#is">is()</a> - Tests if the map consists of the same keys and values</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">every()</h3><a id="user-content-every" class="anchor" aria-label="Permalink: every()" href="#every"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Verifies that all elements pass the test of the given callback.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function every( \Closure $callback ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> every( <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure</strong> <code>$callback</code> Function with (value, key) parameters and returns TRUE/FALSE</li> <li>@return <strong>bool</strong> True if all elements pass the test, false if if fails for at least one element</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [0 =&gt; 'a', 1 =&gt; 'b'] )-&gt;every( function( $value, $key ) { return is_string( $value ); } ); // true Map::from( [0 =&gt; 'a', 1 =&gt; 100] )-&gt;every( function( $value, $key ) { return is_string( $value ); } ); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">every</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-en">is_string</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span> ); } ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-c1">100</span>] )-&gt;<span class="pl-en">every</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-en">is_string</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span> ); } ); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#some">some()</a> - Tests if at least one element passes the test or is part of the map</li> <li><a href="#any">any()</a> - Tests if at least one element satisfies the callback function</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">except()</h3><a id="user-content-except" class="anchor" aria-label="Permalink: except()" href="#except"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns a new map without the passed element keys.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function except( $keys ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> except( <span class="pl-s1"><span class="pl-c1">$</span>keys</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string&gt;|array&lt;int|string&gt;|string|int</strong> <code>$keys</code> List of keys to remove</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The keys in the result map are preserved.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 'b' =&gt; 2, 'c' =&gt; 3] )-&gt;except( 'b' ); // ['a' =&gt; 1, 'c' =&gt; 3] Map::from( [1 =&gt; 'a', 2 =&gt; 'b', 3 =&gt; 'c'] )-&gt;except( [1, 3] ); // [2 =&gt; 'b']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-c1">3</span>] )-&gt;<span class="pl-en">except</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// ['a' =&gt; 1, 'c' =&gt; 3]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">3</span> =&gt; <span class="pl-s">'<span class="pl-s">c</span>'</span>] )-&gt;<span class="pl-en">except</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">3</span>] ); <span class="pl-c">// [2 =&gt; 'b']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#clear">clear()</a> - Removes all elements from the current map</li> <li><a href="#only">only()</a> - Returns only those elements specified by the keys</li> <li><a href="#reject">reject()</a> - Removes all matched elements</li> <li><a href="#remove">remove()</a> - Removes an element by key</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">explode()</h3><a id="user-content-explode" class="anchor" aria-label="Permalink: explode()" href="#explode"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Creates a new map with the string splitted by the delimiter.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public static function explode( string $delimiter , string $string , int $limit = PHP_INT_MAX ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">function</span> explode( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>delimiter</span> , <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>string</span> , <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>limit</span> = <span class="pl-c1">PHP_INT_MAX</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$delimiter</code> Delimiter character, string or empty string</li> <li>@param <strong>string</strong> <code>$string</code> String to split</li> <li>@param <strong>int</strong> <code>$limit</code> Maximum number of element with the last element containing the rest of the string</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with splitted parts</li> </ul> <p dir="auto">A limit of "0" is treated the same as "1". If limit is negative, the rest of the string is dropped and not part of the returned map.</p> <p dir="auto">This method creates a lazy Map and the string is split after calling another method that operates on the Map contents.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::explode( ',', 'a,b,c' ); // ['a', 'b', 'c'] Map::explode( '&lt;--&gt;', 'a a&lt;--&gt;b b&lt;--&gt;c c' ); // ['a a', 'b b', 'c c'] Map::explode( '', 'string' ); // ['s', 't', 'r', 'i', 'n', 'g'] Map::explode( '|', 'a|b|c', 2 ); // ['a', 'b|c'] Map::explode( '', 'string', 2 ); // ['s', 't', 'ring'] Map::explode( '|', 'a|b|c|d', -2 ); // ['a', 'b'] Map::explode( '', 'string', -3 ); // ['s', 't', 'r']"><pre>Map::<span class="pl-en">explode</span>( <span class="pl-s">'<span class="pl-s">,</span>'</span>, <span class="pl-s">'<span class="pl-s">a,b,c</span>'</span> ); <span class="pl-c">// ['a', 'b', 'c']</span> Map::<span class="pl-en">explode</span>( <span class="pl-s">'<span class="pl-s">&lt;--&gt;</span>'</span>, <span class="pl-s">'<span class="pl-s">a a&lt;--&gt;b b&lt;--&gt;c c</span>'</span> ); <span class="pl-c">// ['a a', 'b b', 'c c']</span> Map::<span class="pl-en">explode</span>( <span class="pl-s">''</span>, <span class="pl-s">'<span class="pl-s">string</span>'</span> ); <span class="pl-c">// ['s', 't', 'r', 'i', 'n', 'g']</span> Map::<span class="pl-en">explode</span>( <span class="pl-s">'<span class="pl-s">|</span>'</span>, <span class="pl-s">'<span class="pl-s">a|b|c</span>'</span>, <span class="pl-c1">2</span> ); <span class="pl-c">// ['a', 'b|c']</span> Map::<span class="pl-en">explode</span>( <span class="pl-s">''</span>, <span class="pl-s">'<span class="pl-s">string</span>'</span>, <span class="pl-c1">2</span> ); <span class="pl-c">// ['s', 't', 'ring']</span> Map::<span class="pl-en">explode</span>( <span class="pl-s">'<span class="pl-s">|</span>'</span>, <span class="pl-s">'<span class="pl-s">a|b|c|d</span>'</span>, -<span class="pl-c1">2</span> ); <span class="pl-c">// ['a', 'b']</span> Map::<span class="pl-en">explode</span>( <span class="pl-s">''</span>, <span class="pl-s">'<span class="pl-s">string</span>'</span>, -<span class="pl-c1">3</span> ); <span class="pl-c">// ['s', 't', 'r']</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">fill()</h3><a id="user-content-fill" class="anchor" aria-label="Permalink: fill()" href="#fill"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Creates a new map filled with given value.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public static function fill( int $num, $value, int $start = 0 ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">function</span> fill( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>num</span>, <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>start</span> = <span class="pl-c1">0</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$num</code> Number of elements to create</li> <li>@param <strong>mixed</strong> <code>$value</code> Value to fill the map with</li> <li>@param <strong>int</strong> <code>$start</code> Start index for the elements</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with filled elements</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::fill( 3, 'a' ); // [0 =&gt; 'a', 1 =&gt; 'a', 2 =&gt; 'a'] Map::fill( 3, 'a', 2 ); // [2 =&gt; 'a', 3 =&gt; 'a', 4 =&gt; 'a'] Map::fill( 3, 'a', -2 ); // [-2 =&gt; 'a', -1 =&gt; 'a', 0 =&gt; 'a'] (PHP 8) // [-2 =&gt; 'a', 0 =&gt; 'a', 1 =&gt; 'a'] (PHP 7)"><pre>Map::<span class="pl-en">fill</span>( <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// [0 =&gt; 'a', 1 =&gt; 'a', 2 =&gt; 'a']</span> Map::<span class="pl-en">fill</span>( <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">2</span> ); <span class="pl-c">// [2 =&gt; 'a', 3 =&gt; 'a', 4 =&gt; 'a']</span> Map::<span class="pl-en">fill</span>( <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span>, -<span class="pl-c1">2</span> ); <span class="pl-c">// [-2 =&gt; 'a', -1 =&gt; 'a', 0 =&gt; 'a'] (PHP 8)</span> <span class="pl-c">// [-2 =&gt; 'a', 0 =&gt; 'a', 1 =&gt; 'a'] (PHP 7)</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">filter()</h3><a id="user-content-filter" class="anchor" aria-label="Permalink: filter()" href="#filter"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Runs a filter over each element of the map and returns a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function filter( callable $callback = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> filter( <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>callable|null</strong> <code>$callback</code> Function with (item, key) parameters and returns TRUE/FALSE</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">If no callback is passed, all values which are empty, null or false will be removed if their value converted to boolean is FALSE:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="(bool) $value === false"><pre>(<span class="pl-smi">bool</span>) <span class="pl-s1"><span class="pl-c1">$</span>value</span> === <span class="pl-c1">false</span></pre></div> <p dir="auto">The keys in the result map are preserved.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [null, 0, 1, '', '0', 'a'] )-&gt;filter(); // [1, 'a'] Map::from( [2 =&gt; 'a', 6 =&gt; 'b', 13 =&gt; 'm', 30 =&gt; 'z'] )-&gt;filter( function( $value, $key ) { return $key &lt; 10 &amp;&amp; $value &lt; 'n'; } ); // ['a', 'b']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">null</span>, <span class="pl-c1">0</span>, <span class="pl-c1">1</span>, <span class="pl-s">''</span>, <span class="pl-s">'<span class="pl-s">0</span>'</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">filter</span>(); <span class="pl-c">// [1, 'a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">6</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">13</span> =&gt; <span class="pl-s">'<span class="pl-s">m</span>'</span>, <span class="pl-c1">30</span> =&gt; <span class="pl-s">'<span class="pl-s">z</span>'</span>] )-&gt;<span class="pl-en">filter</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>key</span> &lt; <span class="pl-c1">10</span> &amp;&amp; <span class="pl-s1"><span class="pl-c1">$</span>value</span> &lt; <span class="pl-s">'<span class="pl-s">n</span>'</span>; } ); <span class="pl-c">// ['a', 'b']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#grep">grep()</a> - Applies a regular expression to all elements</li> <li><a href="#where">where()</a> - Filters the list of elements by a given condition</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">find()</h3><a id="user-content-find" class="anchor" aria-label="Permalink: find()" href="#find"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the first matching element where the callback returns TRUE.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function find( \Closure $callback, $default = null, bool $reverse = false )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> find( <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span>, <span class="pl-s1"><span class="pl-c1">$</span>default</span> = <span class="pl-c1">null</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>reverse</span> = <span class="pl-c1">false</span> )</pre></div> <ul dir="auto"> <li>@param <strong>\Closure</strong> <code>$callback</code> Function with (value, key) parameters and returns TRUE/FALSE</li> <li>@param <strong>mixed</strong> <code>$default</code> Default value, closure or exception if the callback only returns FALSE</li> <li>@param <strong>bool</strong> <code>$reverse</code> TRUE to test elements from back to front, FALSE for front to back (default)</li> <li>@return <strong>mixed|null</strong> First matching value, passed default value or an exception</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'c', 'e'] )-&gt;find( function( $value, $key ) { return $value &gt;= 'b'; } ); // 'c' Map::from( ['a', 'c', 'e'] )-&gt;find( function( $value, $key ) { return $value &gt;= 'b'; }, null, true ); // 'e' because $reverse = true Map::from( [] )-&gt;find( function( $value, $key ) { return $value &gt;= 'b'; }, 'none' ); // 'none' Map::from( [] )-&gt;find( function( $value, $key ) { return $value &gt;= 'b'; }, fn() =&gt; 'none' ); // 'none' Map::from( [] )-&gt;find( function( $value, $key ) { return $value &gt;= 'b'; }, new \Exception( 'error' ) ); // throws \Exception"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">e</span>'</span>] )-&gt;<span class="pl-en">find</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> &gt;= <span class="pl-s">'<span class="pl-s">b</span>'</span>; } ); <span class="pl-c">// 'c'</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">e</span>'</span>] )-&gt;<span class="pl-en">find</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> &gt;= <span class="pl-s">'<span class="pl-s">b</span>'</span>; }, <span class="pl-c1">null</span>, <span class="pl-c1">true</span> ); <span class="pl-c">// 'e' because $reverse = true</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">find</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> &gt;= <span class="pl-s">'<span class="pl-s">b</span>'</span>; }, <span class="pl-s">'<span class="pl-s">none</span>'</span> ); <span class="pl-c">// 'none'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">find</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> &gt;= <span class="pl-s">'<span class="pl-s">b</span>'</span>; }, <span class="pl-k">fn</span>() =&gt; <span class="pl-s">'<span class="pl-s">none</span>'</span> ); <span class="pl-c">// 'none'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">find</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> &gt;= <span class="pl-s">'<span class="pl-s">b</span>'</span>; }, <span class="pl-k">new</span> \<span class="pl-v">Exception</span>( <span class="pl-s">'<span class="pl-s">error</span>'</span> ) ); <span class="pl-c">// throws \Exception</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#findkey">findKey()</a> - Returns the first matching key where the callback returns TRUE</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">findKey()</h3><a id="user-content-findkey" class="anchor" aria-label="Permalink: findKey()" href="#findkey"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the first matching key where the callback returns TRUE.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function findKey( \Closure $callback, $default = null, bool $reverse = false )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> findKey( <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span>, <span class="pl-s1"><span class="pl-c1">$</span>default</span> = <span class="pl-c1">null</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>reverse</span> = <span class="pl-c1">false</span> )</pre></div> <ul dir="auto"> <li>@param <strong>\Closure</strong> <code>$callback</code> Function with (value, key) parameters and returns TRUE/FALSE</li> <li>@param <strong>mixed</strong> <code>$default</code> Default value, closure or exception if the callback only returns FALSE</li> <li>@param <strong>bool</strong> <code>$reverse</code> TRUE to test elements from back to front, FALSE for front to back (default)</li> <li>@return <strong>mixed|null</strong> First matching value, passed default value or an exception</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'c', 'e'] )-&gt;findKey( function( $value, $key ) { return $value &gt;= 'b'; } ); // 1 because array has keys 0, 1 and 2 Map::from( ['a', 'c', 'e'] )-&gt;findKey( function( $value, $key ) { return $value &gt;= 'b'; }, null, true ); // 2 because array is reversed and 'e' &gt;= 'b' Map::from( [] )-&gt;findKey( function( $value, $key ) { return $value &gt;= 'b'; }, fn() =&gt; 'none' ); // default value 'none' Map::from( [] )-&gt;findKey( function( $value, $key ) { return $value &gt;= 'b'; }, new \Exception( 'error' ) ); // throws exception"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">e</span>'</span>] )-&gt;<span class="pl-en">findKey</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> &gt;= <span class="pl-s">'<span class="pl-s">b</span>'</span>; } ); <span class="pl-c">// 1 because array has keys 0, 1 and 2</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">e</span>'</span>] )-&gt;<span class="pl-en">findKey</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> &gt;= <span class="pl-s">'<span class="pl-s">b</span>'</span>; }, <span class="pl-c1">null</span>, <span class="pl-c1">true</span> ); <span class="pl-c">// 2 because array is reversed and 'e' &gt;= 'b'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">findKey</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> &gt;= <span class="pl-s">'<span class="pl-s">b</span>'</span>; }, <span class="pl-k">fn</span>() =&gt; <span class="pl-s">'<span class="pl-s">none</span>'</span> ); <span class="pl-c">// default value 'none'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">findKey</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> &gt;= <span class="pl-s">'<span class="pl-s">b</span>'</span>; }, <span class="pl-k">new</span> \<span class="pl-v">Exception</span>( <span class="pl-s">'<span class="pl-s">error</span>'</span> ) ); <span class="pl-c">// throws exception</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#find">find()</a> - Returns the first matching element where the callback returns TRUE</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">first()</h3><a id="user-content-first" class="anchor" aria-label="Permalink: first()" href="#first"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the first element from the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function first( $default = null )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> first( <span class="pl-s1"><span class="pl-c1">$</span>default</span> = <span class="pl-c1">null</span> )</pre></div> <ul dir="auto"> <li>@param <strong>mixed</strong> <code>$default</code> Default value, closure or exception if the map contains no elements</li> <li>@return <strong>mixed</strong> First value of map, (generated) default value or an exception</li> </ul> <p dir="auto">Using this method doesn't affect the internal array pointer.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;first(); // 'a' Map::from( [] )-&gt;first( 'x' ); // 'x' Map::from( [] )-&gt;first( new \Exception( 'error' ) ); // throws \Exception Map::from( [] )-&gt;first( function() { return rand(); } ); // random integer"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">first</span>(); <span class="pl-c">// 'a'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">first</span>( <span class="pl-s">'<span class="pl-s">x</span>'</span> ); <span class="pl-c">// 'x'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">first</span>( <span class="pl-k">new</span> \<span class="pl-v">Exception</span>( <span class="pl-s">'<span class="pl-s">error</span>'</span> ) ); <span class="pl-c">// throws \Exception</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">first</span>( <span class="pl-k">function</span>() { <span class="pl-k">return</span> <span class="pl-en">rand</span>(); } ); <span class="pl-c">// random integer</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#firstkey">firstKey()</a> - Returns the key of the first element from the map</li> <li><a href="#last">last()</a> - Returns the last element from the map</li> <li><a href="#lastkey">lastKey()</a> - Returns the key of the last element from the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">firstKey()</h3><a id="user-content-firstkey" class="anchor" aria-label="Permalink: firstKey()" href="#firstkey"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the key of the first element from the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function firstKey( $default = null )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> firstKey( <span class="pl-s1"><span class="pl-c1">$</span>default</span> = <span class="pl-c1">null</span> )</pre></div> <ul dir="auto"> <li>@param <strong>mixed</strong> <code>$default</code> Default value, closure or exception if the map contains no elements</li> <li>@return <strong>mixed</strong> First key of map, (generated) default value or an exception</li> </ul> <p dir="auto">Using this method doesn't affect the internal array pointer.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 'b' =&gt; 2] )-&gt;firstKey(); // 'a' Map::from( [] )-&gt;firstKey( 'x' ); // 'x' Map::from( [] )-&gt;firstKey( new \Exception( 'error' ) ); // throws \Exception Map::from( [] )-&gt;firstKey( function() { return rand(); } ); // random integer"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">2</span>] )-&gt;<span class="pl-en">firstKey</span>(); <span class="pl-c">// 'a'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">firstKey</span>( <span class="pl-s">'<span class="pl-s">x</span>'</span> ); <span class="pl-c">// 'x'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">firstKey</span>( <span class="pl-k">new</span> \<span class="pl-v">Exception</span>( <span class="pl-s">'<span class="pl-s">error</span>'</span> ) ); <span class="pl-c">// throws \Exception</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">firstKey</span>( <span class="pl-k">function</span>() { <span class="pl-k">return</span> <span class="pl-en">rand</span>(); } ); <span class="pl-c">// random integer</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#first">first()</a> - Returns the first element from the map</li> <li><a href="#last">last()</a> - Returns the last element from the map</li> <li><a href="#lastkey">lastKey()</a> - Returns the last key from the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">flat()</h3><a id="user-content-flat" class="anchor" aria-label="Permalink: flat()" href="#flat"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Creates a new map with all sub-array elements added recursively.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function flat( int $depth = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> flat( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>depth</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int|null</strong> <code>$depth</code> Number of levels to flatten multi-dimensional arrays</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with all sub-array elements added into it recursively, up to the specified depth</li> </ul> <p dir="auto">The keys are not preserved and the new map elements will be numbered from 0-n. A value smaller than 1 for depth will return the same map elements indexed from 0-n. Flattening does also work if elements implement the "Traversable" interface (which the Map object does).</p> <p dir="auto">This method is similar than <a href="#collapse">collapse()</a> but doesn't replace existing elements. Keys are NOT preserved using this method!</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [[0, 1], [2, 3]] )-&gt;flat(); // [0, 1, 2, 3] Map::from( [[0, 1], [[2, 3], 4]] )-&gt;flat(); // [0, 1, 2, 3, 4] Map::from( [[0, 1], [[2, 3], 4]] )-&gt;flat( 1 ); // [0, 1, [2, 3], 4] Map::from( [[0, 1], Map::from( [[2, 3], 4] )] )-&gt;flat(); // [0, 1, 2, 3, 4]"><pre>Map::<span class="pl-en">from</span>( [[<span class="pl-c1">0</span>, <span class="pl-c1">1</span>], [<span class="pl-c1">2</span>, <span class="pl-c1">3</span>]] )-&gt;<span class="pl-en">flat</span>(); <span class="pl-c">// [0, 1, 2, 3]</span> Map::<span class="pl-en">from</span>( [[<span class="pl-c1">0</span>, <span class="pl-c1">1</span>], [[<span class="pl-c1">2</span>, <span class="pl-c1">3</span>], <span class="pl-c1">4</span>]] )-&gt;<span class="pl-en">flat</span>(); <span class="pl-c">// [0, 1, 2, 3, 4]</span> Map::<span class="pl-en">from</span>( [[<span class="pl-c1">0</span>, <span class="pl-c1">1</span>], [[<span class="pl-c1">2</span>, <span class="pl-c1">3</span>], <span class="pl-c1">4</span>]] )-&gt;<span class="pl-en">flat</span>( <span class="pl-c1">1</span> ); <span class="pl-c">// [0, 1, [2, 3], 4]</span> Map::<span class="pl-en">from</span>( [[<span class="pl-c1">0</span>, <span class="pl-c1">1</span>], Map::<span class="pl-en">from</span>( [[<span class="pl-c1">2</span>, <span class="pl-c1">3</span>], <span class="pl-c1">4</span>] )] )-&gt;<span class="pl-en">flat</span>(); <span class="pl-c">// [0, 1, 2, 3, 4]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#collapse">collapse()</a> - Collapses all sub-array elements recursively to a new map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">flip()</h3><a id="user-content-flip" class="anchor" aria-label="Permalink: flip()" href="#flip"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Exchanges the keys with their values and vice versa.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function flip() : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> flip() : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with keys as values and values as keys</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'X', 'b' =&gt; 'Y'] )-&gt;flip(); // ['X' =&gt; 'a', 'Y' =&gt; 'b']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">X</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">Y</span>'</span>] )-&gt;<span class="pl-en">flip</span>(); <span class="pl-c">// ['X' =&gt; 'a', 'Y' =&gt; 'b']</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">float()</h3><a id="user-content-float" class="anchor" aria-label="Permalink: float()" href="#float"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns an element by key and casts it to float if possible.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function float( $key, $default = 0.0 ) : float"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> float( <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-s1"><span class="pl-c1">$</span>default</span> = <span class="pl-c1">0.0</span> ) : <span class="pl-smi">float</span></pre></div> <ul dir="auto"> <li>@param <strong>int|string</strong> <code>$key</code> Key or path to the requested item</li> <li>@param <strong>mixed</strong> <code>$default</code> Default value if key isn't found (will be casted to float)</li> <li>@return <strong>float</strong> Value from map or default value</li> </ul> <p dir="auto">This does also work to map values from multi-dimensional arrays by passing the keys of the arrays separated by the delimiter ("/" by default), e.g. <code>key1/key2/key3</code> to get <code>val</code> from <code>['key1' =&gt; ['key2' =&gt; ['key3' =&gt; 'val']]]</code>. The same applies to public properties of objects or objects implementing <code>__isset()</code> and <code>__get()</code> methods.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; true] )-&gt;float( 'a' ); // 1.0 (casted to float) Map::from( ['a' =&gt; 1] )-&gt;float( 'a' ); // 1.0 (casted to float) Map::from( ['a' =&gt; '1.1'] )-&gt;float( 'a' ); // 1.1 (casted to float) Map::from( ['a' =&gt; '10'] )-&gt;float( 'a' ); // 10.0 (casted to float) Map::from( ['a' =&gt; ['b' =&gt; ['c' =&gt; 1.1]]] )-&gt;float( 'a/b/c' ); // 1.1 Map::from( [] )-&gt;float( 'c', function() { return 1.1; } ); // 1.1 Map::from( [] )-&gt;float( 'a', 1 ); // 1.0 (default value used) Map::from( [] )-&gt;float( 'a' ); // 0.0 Map::from( ['b' =&gt; ''] )-&gt;float( 'b' ); // 0.0 (casted to float) Map::from( ['a' =&gt; 'abc'] )-&gt;float( 'a' ); // 0.0 (casted to float) Map::from( ['b' =&gt; null] )-&gt;float( 'b' ); // 0.0 (null is not scalar) Map::from( ['b' =&gt; [true]] )-&gt;float( 'b' ); // 0.0 (arrays are not scalar) Map::from( ['b' =&gt; '#resource'] )-&gt;float( 'b' ); // 0.0 (resources are not scalar) Map::from( ['b' =&gt; new \stdClass] )-&gt;float( 'b' ); // 0.0 (objects are not scalar) Map::from( [] )-&gt;float( 'c', new \Exception( 'error' ) ); // throws exception"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">true</span>] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// 1.0 (casted to float)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// 1.0 (casted to float)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">1.1</span>'</span>] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// 1.1 (casted to float)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">10</span>'</span>] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// 10.0 (casted to float)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-c1">1.1</span>]]] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">a/b/c</span>'</span> ); <span class="pl-c">// 1.1</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-k">function</span>() { <span class="pl-k">return</span> <span class="pl-c1">1.1</span>; } ); <span class="pl-c">// 1.1</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">1</span> ); <span class="pl-c">// 1.0 (default value used)</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// 0.0</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">''</span>] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// 0.0 (casted to float)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// 0.0 (casted to float)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">null</span>] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// 0.0 (null is not scalar)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; [<span class="pl-c1">true</span>]] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// 0.0 (arrays are not scalar)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">#resource</span>'</span>] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// 0.0 (resources are not scalar)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-k">new</span> \<span class="pl-v">stdClass</span>] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// 0.0 (objects are not scalar)</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">float</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-k">new</span> \<span class="pl-v">Exception</span>( <span class="pl-s">'<span class="pl-s">error</span>'</span> ) ); <span class="pl-c">// throws exception</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#bool">bool()</a> - Returns an element by key and casts it to boolean if possible</li> <li><a href="#cast">cast()</a> - Casts all entries to the passed type</li> <li><a href="#get">get()</a> - Returns an element from the map by key</li> <li><a href="#int">int()</a> - Returns an element by key and casts it to integer if possible</li> <li><a href="#string">string()</a> - Returns an element by key and casts it to string if possible</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">from()</h3><a id="user-content-from" class="anchor" aria-label="Permalink: from()" href="#from"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Creates a new map instance if the value isn't one already.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public static function from( $elements = [] ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">function</span> from( <span class="pl-s1"><span class="pl-c1">$</span>elements</span> = [] ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>mixed</strong> <code>$elements</code> List of elements or single value</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="// array Map::from( [] ); // null Map::from( null ); // scalar Map::from( 'a' ); // object Map::from( new \stdClass() ); // map object Map::from( new Map() ); // iterable object Map::from( new ArrayObject() ); // closure evaluated lazily Map::from( function() { return []; } );"><pre><span class="pl-c">// array</span> Map::<span class="pl-en">from</span>( [] ); <span class="pl-c">// null</span> Map::<span class="pl-en">from</span>( <span class="pl-c1">null</span> ); <span class="pl-c">// scalar</span> Map::<span class="pl-en">from</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// object</span> Map::<span class="pl-en">from</span>( <span class="pl-k">new</span> \<span class="pl-v">stdClass</span>() ); <span class="pl-c">// map object</span> Map::<span class="pl-en">from</span>( <span class="pl-k">new</span> <span class="pl-v">Map</span>() ); <span class="pl-c">// iterable object</span> Map::<span class="pl-en">from</span>( <span class="pl-k">new</span> <span class="pl-v">ArrayObject</span>() ); <span class="pl-c">// closure evaluated lazily</span> Map::<span class="pl-en">from</span>( <span class="pl-k">function</span>() { <span class="pl-k">return</span> []; } );</pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#fromjson">fromJson()</a> - Creates a new map instance from a JSON string</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">fromJson()</h3><a id="user-content-fromjson" class="anchor" aria-label="Permalink: fromJson()" href="#fromjson"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Creates a new map instance from a JSON string.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public static function fromJson( string $json, int $options = JSON_BIGINT_AS_STRING ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">function</span> fromJson( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>json</span>, <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">JSON_BIGINT_AS_STRING</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Combination of JSON_* constants</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map from decoded JSON string</li> <li>@throws <strong>\RuntimeException</strong> If the passed JSON string is invalid</li> </ul> <p dir="auto">There are several options available for decoding the JSON string which are described in the <a href="https://www.php.net/manual/en/function.json-decode.php" rel="nofollow">PHP json_decode() manual</a>. The parameter can be a single JSON_* constant or a bitmask of several constants combine by bitwise OR (|), e.g.:</p> <p dir="auto">This method creates a lazy Map and the string is decoded after calling another method that operates on the Map contents. Thus, the exception in case of an error isn't thrown immediately but after calling the next method.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="JSON_BIGINT_AS_STRING|JSON_INVALID_UTF8_IGNORE"><pre><span class="pl-c1">JSON_BIGINT_AS_STRING</span>|<span class="pl-c1">JSON_INVALID_UTF8_IGNORE</span></pre></div> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::fromJson( '[&quot;a&quot;, &quot;b&quot;]' ); // ['a', 'b'] Map::fromJson( '{&quot;a&quot;: &quot;b&quot;}' ); // ['a' =&gt; 'b'] Map::fromJson( '&quot;&quot;' ); ['']"><pre>Map::<span class="pl-en">fromJson</span>( <span class="pl-s">'<span class="pl-s">["a", "b"]</span>'</span> ); <span class="pl-c">// ['a', 'b']</span> Map::<span class="pl-en">fromJson</span>( <span class="pl-s">'<span class="pl-s">{"a": "b"}</span>'</span> ); <span class="pl-c">// ['a' =&gt; 'b']</span> Map::<span class="pl-en">fromJson</span>( <span class="pl-s">'<span class="pl-s">""</span>'</span> ); [<span class="pl-s">''</span>]</pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#from">from()</a> - Creates a new map instance if the value isn't one already</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">get()</h3><a id="user-content-get" class="anchor" aria-label="Permalink: get()" href="#get"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns an element from the map by key.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function get( $key, $default = null )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> get( <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-s1"><span class="pl-c1">$</span>default</span> = <span class="pl-c1">null</span> )</pre></div> <ul dir="auto"> <li>@param <strong>int|string</strong> <code>$key</code> Key or path to the requested item</li> <li>@param <strong>mixed</strong> <code>$default</code> Default value if no element matches</li> <li>@return <strong>mixed</strong> Value from map or default value</li> </ul> <p dir="auto">This does also work to map values from multi-dimensional arrays by passing the keys of the arrays separated by the delimiter ("/" by default), e.g. <code>key1/key2/key3</code> to get <code>val</code> from <code>['key1' =&gt; ['key2' =&gt; ['key3' =&gt; 'val']]]</code>. The same applies to public properties of objects or objects implementing <code>__isset()</code> and <code>__get()</code> methods.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'X', 'b' =&gt; 'Y'] )-&gt;get( 'a' ); // 'X' Map::from( ['a' =&gt; 'X', 'b' =&gt; 'Y'] )-&gt;get( 'c', 'Z' ); // 'Z' Map::from( ['a' =&gt; ['b' =&gt; ['c' =&gt; 'Y']]] )-&gt;get( 'a/b/c' ); // 'Y' Map::from( [] )-&gt;get( 'c', new \Exception( 'error' ) ); // throws \Exception Map::from( [] )-&gt;get( 'c', function() { return rand(); } ); // random integer"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">X</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">Y</span>'</span>] )-&gt;<span class="pl-en">get</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// 'X'</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">X</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">Y</span>'</span>] )-&gt;<span class="pl-en">get</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">Z</span>'</span> ); <span class="pl-c">// 'Z'</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">Y</span>'</span>]]] )-&gt;<span class="pl-en">get</span>( <span class="pl-s">'<span class="pl-s">a/b/c</span>'</span> ); <span class="pl-c">// 'Y'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">get</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-k">new</span> \<span class="pl-v">Exception</span>( <span class="pl-s">'<span class="pl-s">error</span>'</span> ) ); <span class="pl-c">// throws \Exception</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">get</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-k">function</span>() { <span class="pl-k">return</span> <span class="pl-en">rand</span>(); } ); <span class="pl-c">// random integer</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#bool">bool()</a> - Returns an element by key and casts it to boolean if possible</li> <li><a href="#int">int()</a> - Returns an element by key and casts it to integer if possible</li> <li><a href="#float">float()</a> - Returns an element by key and casts it to float if possible</li> <li><a href="#pull">pull()</a> - Returns and removes an element from the map by its key</li> <li><a href="#set">set()</a> - Sets an element in the map by key without returning a new map</li> <li><a href="#string">string()</a> - Returns an element by key and casts it to string if possible</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">getIterator()</h3><a id="user-content-getiterator" class="anchor" aria-label="Permalink: getIterator()" href="#getiterator"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns an iterator for the elements.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function getIterator() : \ArrayIterator"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> getIterator() : <span class="pl-smi">\<span class="pl-smi">ArrayIterator</span></span></pre></div> <ul dir="auto"> <li>@return <strong>\Iterator</strong> Over map elements</li> </ul> <p dir="auto">This method will be used by e.g. <code>foreach()</code> to loop over all entries.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="foreach( Map::from( ['a', 'b'] ) as $value ) { // ... }"><pre><span class="pl-k">foreach</span>( Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] ) <span class="pl-k">as</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> ) { <span class="pl-c">// ...</span> }</pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">grep()</h3><a id="user-content-grep" class="anchor" aria-label="Permalink: grep()" href="#grep"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns only items which matches the regular expression.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function grep( string $pattern, int $flags = 0 ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> grep( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>pattern</span>, <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>flags</span> = <span class="pl-c1">0</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$pattern</code> Regular expression pattern, e.g. "/ab/"</li> <li>@param <strong>int</strong> <code>$flags</code> PREG_GREP_INVERT to return elements not matching the pattern</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map containing only the matched elements</li> </ul> <p dir="auto">All items are converted to string first before they are compared to the regular expression. Thus, fractions of ".0" will be removed in float numbers which may result in unexpected results. The keys are preserved using this method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['ab', 'bc', 'cd'] )-&gt;grep( '/b/' ); // ['ab', 'bc'] Map::from( ['ab', 'bc', 'cd'] )-&gt;grep( '/a/', PREG_GREP_INVERT ); // ['bc', 'cd'] Map::from( [1.5, 0, 1.0, 'a'] )-&gt;grep( '/^(\d+)?\.\d+$/' ); // [1.5] // float 1.0 is converted to string &quot;1&quot;"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">ab</span>'</span>, <span class="pl-s">'<span class="pl-s">bc</span>'</span>, <span class="pl-s">'<span class="pl-s">cd</span>'</span>] )-&gt;<span class="pl-en">grep</span>( <span class="pl-s">'<span class="pl-s">/b/</span>'</span> ); <span class="pl-c">// ['ab', 'bc']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">ab</span>'</span>, <span class="pl-s">'<span class="pl-s">bc</span>'</span>, <span class="pl-s">'<span class="pl-s">cd</span>'</span>] )-&gt;<span class="pl-en">grep</span>( <span class="pl-s">'<span class="pl-s">/a/</span>'</span>, <span class="pl-c1">PREG_GREP_INVERT</span> ); <span class="pl-c">// ['bc', 'cd']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1.5</span>, <span class="pl-c1">0</span>, <span class="pl-c1">1.0</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">grep</span>( <span class="pl-s">'<span class="pl-s">/^(\d+)?\.\d+$/</span>'</span> ); <span class="pl-c">// [1.5]</span> <span class="pl-c">// float 1.0 is converted to string "1"</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#filter">filter()</a> - Runs a filter over each element of the map and returns a new map</li> <li><a href="#where">where()</a> - Filters the list of elements by a given condition</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">groupBy()</h3><a id="user-content-groupby" class="anchor" aria-label="Permalink: groupBy()" href="#groupby"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Groups associative array elements or objects by the passed key or closure.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function groupBy( $key ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> groupBy( <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|string|int</strong> <code>$key</code> Closure function with (item, idx) parameters returning the key or the key itself to group by</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with elements grouped by the given key</li> </ul> <p dir="auto">Instead of overwriting items with the same keys like to the <a href="#col">col()</a> method does, <a href="#groupby">groupBy()</a> keeps all entries in sub-arrays. It's preserves the keys of the orignal map entries too.</p> <p dir="auto">This does also work for multi-dimensional arrays by passing the keys of the arrays separated by the delimiter ("/" by default), e.g. "key1/key2/key3" to get "val" from ['key1' =&gt; ['key2' =&gt; ['key3' =&gt; 'val']]]. The same applies to public properties of objects or objects implementing __isset() and __get() methods.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$list = [ 10 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-abc'], 20 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-def'], 30 =&gt; ['aid' =&gt; 456, 'code' =&gt; 'x-def'] ]; Map::from( $list )-&gt;groupBy( 'aid' ); /* [ 123 =&gt; [ 10 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-abc'], 20 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-def'] ], 456 =&gt; [ 30 =&gt; ['aid' =&gt; 456, 'code' =&gt; 'x-def'] ] ] */ Map::from( $list )-&gt;groupBy( function( $item, $key ) { return substr( $item['code'], -3 ); } ); /* [ 'abc' =&gt; [ 10 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-abc'] ], 'def' =&gt; [ 20 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-def'], 30 =&gt; ['aid' =&gt; 456, 'code' =&gt; 'x-def'] ] ] */"><pre><span class="pl-s1"><span class="pl-c1">$</span>list</span> = [ <span class="pl-c1">10</span> =&gt; [<span class="pl-s">'<span class="pl-s">aid</span>'</span> =&gt; <span class="pl-c1">123</span>, <span class="pl-s">'<span class="pl-s">code</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">x-abc</span>'</span>], <span class="pl-c1">20</span> =&gt; [<span class="pl-s">'<span class="pl-s">aid</span>'</span> =&gt; <span class="pl-c1">123</span>, <span class="pl-s">'<span class="pl-s">code</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">x-def</span>'</span>], <span class="pl-c1">30</span> =&gt; [<span class="pl-s">'<span class="pl-s">aid</span>'</span> =&gt; <span class="pl-c1">456</span>, <span class="pl-s">'<span class="pl-s">code</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">x-def</span>'</span>] ]; Map::<span class="pl-en">from</span>( <span class="pl-s1"><span class="pl-c1">$</span>list</span> )-&gt;<span class="pl-en">groupBy</span>( <span class="pl-s">'<span class="pl-s">aid</span>'</span> ); <span class="pl-c">/*</span> <span class="pl-c">[</span> <span class="pl-c"> 123 =&gt; [</span> <span class="pl-c"> 10 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-abc'],</span> <span class="pl-c"> 20 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-def']</span> <span class="pl-c"> ],</span> <span class="pl-c"> 456 =&gt; [</span> <span class="pl-c"> 30 =&gt; ['aid' =&gt; 456, 'code' =&gt; 'x-def']</span> <span class="pl-c"> ]</span> <span class="pl-c">]</span> <span class="pl-c">*/</span> Map::<span class="pl-en">from</span>( <span class="pl-s1"><span class="pl-c1">$</span>list</span> )-&gt;<span class="pl-en">groupBy</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-en">substr</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>[<span class="pl-s">'<span class="pl-s">code</span>'</span>], -<span class="pl-c1">3</span> ); } ); <span class="pl-c">/*</span> <span class="pl-c">[</span> <span class="pl-c"> 'abc' =&gt; [</span> <span class="pl-c"> 10 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-abc']</span> <span class="pl-c"> ],</span> <span class="pl-c"> 'def' =&gt; [</span> <span class="pl-c"> 20 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-def'],</span> <span class="pl-c"> 30 =&gt; ['aid' =&gt; 456, 'code' =&gt; 'x-def']</span> <span class="pl-c"> ]</span> <span class="pl-c">]</span> <span class="pl-c">*/</span></pre></div> <p dir="auto">In case the passed key doesn't exist in one or more items, these items are stored in a sub-array using an empty string as key:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$list = [ 10 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-abc'], 20 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-def'], 30 =&gt; ['aid' =&gt; 456, 'code' =&gt; 'x-def'] ]; Map::from( $list )-&gt;groupBy( 'xid' ); /* [ '' =&gt; [ 10 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-abc'], 20 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-def'], 30 =&gt; ['aid' =&gt; 456, 'code' =&gt; 'x-def'] ] ] */"><pre><span class="pl-s1"><span class="pl-c1">$</span>list</span> = [ <span class="pl-c1">10</span> =&gt; [<span class="pl-s">'<span class="pl-s">aid</span>'</span> =&gt; <span class="pl-c1">123</span>, <span class="pl-s">'<span class="pl-s">code</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">x-abc</span>'</span>], <span class="pl-c1">20</span> =&gt; [<span class="pl-s">'<span class="pl-s">aid</span>'</span> =&gt; <span class="pl-c1">123</span>, <span class="pl-s">'<span class="pl-s">code</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">x-def</span>'</span>], <span class="pl-c1">30</span> =&gt; [<span class="pl-s">'<span class="pl-s">aid</span>'</span> =&gt; <span class="pl-c1">456</span>, <span class="pl-s">'<span class="pl-s">code</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">x-def</span>'</span>] ]; Map::<span class="pl-en">from</span>( <span class="pl-s1"><span class="pl-c1">$</span>list</span> )-&gt;<span class="pl-en">groupBy</span>( <span class="pl-s">'<span class="pl-s">xid</span>'</span> ); <span class="pl-c">/*</span> <span class="pl-c">[</span> <span class="pl-c"> '' =&gt; [</span> <span class="pl-c"> 10 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-abc'],</span> <span class="pl-c"> 20 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-def'],</span> <span class="pl-c"> 30 =&gt; ['aid' =&gt; 456, 'code' =&gt; 'x-def']</span> <span class="pl-c"> ]</span> <span class="pl-c">]</span> <span class="pl-c">*/</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#countby">countBy()</a> - Counts how often the same values are in the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">has()</h3><a id="user-content-has" class="anchor" aria-label="Permalink: has()" href="#has"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Determines if a key or several keys exists in the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function has( $key ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> has( <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>array&lt;int|string&lt;|int|string</strong> <code>$key</code> Key or path to the requested item</li> <li>@return <strong>bool</strong> TRUE if key is available in map, FALSE if not</li> </ul> <p dir="auto">If several keys are passed as array, all keys must exist in the map to return TRUE.</p> <p dir="auto">This does also work to map values from multi-dimensional arrays by passing the keys of the arrays separated by the delimiter ("/" by default), e.g. <code>key1/key2/key3</code> to get <code>val</code> from <code>['key1' =&gt; ['key2' =&gt; ['key3' =&gt; 'val']]]</code>. The same applies to public properties of objects or objects implementing <code>__isset()</code> and <code>__get()</code> methods.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'X', 'b' =&gt; 'Y'] )-&gt;has( 'a' ); // true Map::from( ['a' =&gt; 'X', 'b' =&gt; 'Y'] )-&gt;has( ['a', 'b'] ); // false Map::from( ['a' =&gt; ['b' =&gt; ['c' =&gt; 'Y']]] )-&gt;has( 'a/b/c' ); // true Map::from( ['a' =&gt; 'X', 'b' =&gt; 'Y'] )-&gt;has( 'c' ); // false Map::from( ['a' =&gt; 'X', 'b' =&gt; 'Y'] )-&gt;has( ['a', 'c'] ); // false Map::from( ['a' =&gt; 'X', 'b' =&gt; 'Y'] )-&gt;has( 'X' ); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">X</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">Y</span>'</span>] )-&gt;<span class="pl-en">has</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">X</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">Y</span>'</span>] )-&gt;<span class="pl-en">has</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">Y</span>'</span>]]] )-&gt;<span class="pl-en">has</span>( <span class="pl-s">'<span class="pl-s">a/b/c</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">X</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">Y</span>'</span>] )-&gt;<span class="pl-en">has</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">X</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">Y</span>'</span>] )-&gt;<span class="pl-en">has</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">X</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">Y</span>'</span>] )-&gt;<span class="pl-en">has</span>( <span class="pl-s">'<span class="pl-s">X</span>'</span> ); <span class="pl-c">// false</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">if()</h3><a id="user-content-if" class="anchor" aria-label="Permalink: if()" href="#if"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Executes callbacks depending on the condition.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function if( $condition, \Closure $then, \Closure $else = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> if( <span class="pl-s1"><span class="pl-c1">$</span>condition</span>, <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>then</span>, <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>else</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|bool</strong> <code>$condition</code> Boolean or function with (map) parameter returning a boolean</li> <li>@param <strong>\Closure</strong> <code>$then</code> Function with (map) parameter</li> <li>@param <strong>\Closure|null</strong> <code>$else</code> Function with (map) parameter (optional)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map for fluid interface</li> </ul> <p dir="auto">If callbacks for "then" and/or "else" are passed, these callbacks will be executed and their returned value is passed back within a Map object. In case no "then" or "else" closure is given, the method will return the same map object if the condition is true or an empty map object if it's false.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 'b' =&gt; 0] )-&gt;if( 'a' == 'b', function( Map $_ ) { echo &quot;then&quot;; } ); // no output Map::from( ['a' =&gt; 1, 'b' =&gt; 0] )-&gt;if( function( Map $map ) { return $map-&gt;has( 'a' ); }, function( Map $_ ) { echo &quot;then&quot;; }, function( Map $_ ) { echo &quot;else&quot;; } ); // then Map::from( ['a' =&gt; 1, 'b' =&gt; 0] )-&gt;if( fn( Map $map ) =&gt; $map-&gt;has( 'c' ), function( Map $_ ) { echo &quot;then&quot;; }, function( Map $_ ) { echo &quot;else&quot;; } ); // else Map::from( ['a', 'b'] )-&gt;if( true, function( $map ) { return $map-&gt;push( 'c' ); } ); // ['a', 'b', 'c'] Map::from( ['a', 'b'] )-&gt;if( false, null, function( $map ) { return $map-&gt;pop(); } ); // ['b']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>] )-&gt;<span class="pl-en">if</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> == <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-k">function</span>( <span class="pl-smi"><span class="pl-smi">Map</span></span> <span class="pl-s1"><span class="pl-c1">$</span>_</span> ) { <span class="pl-k">echo</span> <span class="pl-s">"<span class="pl-s">then</span>"</span>; } ); <span class="pl-c">// no output</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>] )-&gt;<span class="pl-en">if</span>( <span class="pl-k">function</span>( <span class="pl-smi"><span class="pl-smi">Map</span></span> <span class="pl-s1"><span class="pl-c1">$</span>map</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">has</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); }, <span class="pl-k">function</span>( <span class="pl-smi"><span class="pl-smi">Map</span></span> <span class="pl-s1"><span class="pl-c1">$</span>_</span> ) { <span class="pl-k">echo</span> <span class="pl-s">"<span class="pl-s">then</span>"</span>; }, <span class="pl-k">function</span>( <span class="pl-smi"><span class="pl-smi">Map</span></span> <span class="pl-s1"><span class="pl-c1">$</span>_</span> ) { <span class="pl-k">echo</span> <span class="pl-s">"<span class="pl-s">else</span>"</span>; } ); <span class="pl-c">// then</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>] )-&gt;<span class="pl-en">if</span>( <span class="pl-k">fn</span>( <span class="pl-smi"><span class="pl-smi">Map</span></span> <span class="pl-s1"><span class="pl-c1">$</span>map</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">has</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span> ), <span class="pl-k">function</span>( <span class="pl-smi"><span class="pl-smi">Map</span></span> <span class="pl-s1"><span class="pl-c1">$</span>_</span> ) { <span class="pl-k">echo</span> <span class="pl-s">"<span class="pl-s">then</span>"</span>; }, <span class="pl-k">function</span>( <span class="pl-smi"><span class="pl-smi">Map</span></span> <span class="pl-s1"><span class="pl-c1">$</span>_</span> ) { <span class="pl-k">echo</span> <span class="pl-s">"<span class="pl-s">else</span>"</span>; } ); <span class="pl-c">// else</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">if</span>( <span class="pl-c1">true</span>, <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">push</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span> ); } ); <span class="pl-c">// ['a', 'b', 'c']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">if</span>( <span class="pl-c1">false</span>, <span class="pl-c1">null</span>, <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">pop</span>(); } ); <span class="pl-c">// ['b']</span></pre></div> <p dir="auto">Since PHP 7.4, you can also pass arrow function like <code>fn($map) =&gt; $map-&gt;has('c')</code> (a short form for anonymous closures) as parameters. The automatically have access to previously defined variables but can not modify them. Also, they can not have a void return type and must/will always return something. Details about <a href="https://www.php.net/manual/en/functions.arrow.php" rel="nofollow">PHP arrow functions</a></p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#ifany">ifAny()</a> - Executes callbacks depending if the map contains elements or not</li> <li><a href="#ifempty">ifEmpty()</a> - Executes callbacks depending if the map is empty or not</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">ifAny()</h3><a id="user-content-ifany" class="anchor" aria-label="Permalink: ifAny()" href="#ifany"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li>Executes callbacks depending if the map contains elements or not.</li> </ul> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function ifAny( \Closure $then = null, \Closure $else = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> ifAny( <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>then</span> = <span class="pl-c1">null</span>, <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>else</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|null</strong> <code>$then</code> Function with (map, condition) parameter (optional)</li> <li>@param <strong>\Closure|null</strong> <code>$else</code> Function with (map, condition) parameter (optional)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map for fluid interface</li> </ul> <p dir="auto">If callbacks for "then" and/or "else" are passed, these callbacks will be executed and their returned value is passed back within a Map object. In case no "then" or "else" closure is given, the method will return the same map object.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a'] )-&gt;ifAny( function( $map ) { $map-&gt;push( 'b' ); } ); // ['a', 'b'] Map::from( [] )-&gt;ifAny( null, function( $map ) { return $map-&gt;push( 'b' ); } ); // ['b'] Map::from( ['a'] )-&gt;ifAny( function( $map ) { return 'c'; } ); // ['c']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">ifAny</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span> ) { <span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">push</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); } ); <span class="pl-c">// ['a', 'b']</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">ifAny</span>( <span class="pl-c1">null</span>, <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">push</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); } ); <span class="pl-c">// ['b']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">ifAny</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span> ) { <span class="pl-k">return</span> <span class="pl-s">'<span class="pl-s">c</span>'</span>; } ); <span class="pl-c">// ['c']</span></pre></div> <p dir="auto">Since PHP 7.4, you can also pass arrow function like <code>fn($map) =&gt; $map-&gt;has('c')</code> (a short form for anonymous closures) as parameters. The automatically have access to previously defined variables but can not modify them. Also, they can not have a void return type and must/will always return something. Details about <a href="https://www.php.net/manual/en/functions.arrow.php" rel="nofollow">PHP arrow functions</a></p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#if">if()</a> - Executes callbacks depending on the condition</li> <li><a href="#ifempty">ifEmpty()</a> - Executes callbacks depending if the map is empty or not</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">ifEmpty()</h3><a id="user-content-ifempty" class="anchor" aria-label="Permalink: ifEmpty()" href="#ifempty"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <ul dir="auto"> <li>Executes callbacks depending if the map is empty or not.</li> </ul> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function ifEmpty( \Closure $then = null, \Closure $else = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> ifEmpty( <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>then</span> = <span class="pl-c1">null</span>, <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>else</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|null</strong> <code>$then</code> Function with (map, condition) parameter (optional)</li> <li>@param <strong>\Closure|null</strong> <code>$else</code> Function with (map, condition) parameter (optional)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map for fluid interface</li> </ul> <p dir="auto">If callbacks for "then" and/or "else" are passed, these callbacks will be executed and their returned value is passed back within a Map object. In case no "then" or "else" closure is given, the method will return the same map object.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [] )-&gt;ifEmpty( function( $map ) { $map-&gt;push( 'a' ); } ); // ['a'] Map::from( ['a'] )-&gt;ifEmpty( null, function( $map ) { return $map-&gt;push( 'b' ); } ); // ['a', 'b']"><pre>Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">ifEmpty</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span> ) { <span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">push</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); } ); <span class="pl-c">// ['a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">ifEmpty</span>( <span class="pl-c1">null</span>, <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">push</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); } ); <span class="pl-c">// ['a', 'b']</span></pre></div> <p dir="auto">Since PHP 7.4, you can also pass arrow function like <code>fn($map) =&gt; $map-&gt;has('c')</code> (a short form for anonymous closures) as parameters. The automatically have access to previously defined variables but can not modify them. Also, they can not have a void return type and must/will always return something. Details about <a href="https://www.php.net/manual/en/functions.arrow.php" rel="nofollow">PHP arrow functions</a></p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#if">if()</a> - Executes callbacks depending on the condition</li> <li><a href="#ifany">ifAny()</a> - Executes callbacks depending if the map contains elements or not</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">implements()</h3><a id="user-content-implements" class="anchor" aria-label="Permalink: implements()" href="#implements"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if all entries in the map are objects implementing the given interface.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function implements( string $interface, $throw = false ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> implements( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>interface</span>, <span class="pl-s1"><span class="pl-c1">$</span>throw</span> = <span class="pl-c1">false</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$interface</code> Name of the interface that must be implemented</li> <li>@param <strong>\Throwable|bool</strong> <code>$throw</code> Passing TRUE or an exception name will throw the exception instead of returning FALSE</li> <li>@return <strong>bool</strong> TRUE if all entries implement the interface or FALSE if at least one doesn't</li> <li>@throws <strong>\UnexpectedValueException|\Throwable</strong> If one entry doesn't implement the interface</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [new Map(), new Map()] )-&gt;implements( '\Countable' ); // true Map::from( [new Map(), new \stdClass()] )-&gt;implements( '\Countable' ); // false Map::from( [new Map(), 123] )-&gt;implements( '\Countable' ); // false Map::from( [new Map(), 123] )-&gt;implements( '\Countable', true ); // throws \UnexpectedValueException Map::from( [new Map(), 123] )-&gt;implements( '\Countable', '\RuntimeException' ); // throws \RuntimeException"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-k">new</span> <span class="pl-v">Map</span>(), <span class="pl-k">new</span> <span class="pl-v">Map</span>()] )-&gt;<span class="pl-en">implements</span>( <span class="pl-s">'<span class="pl-s">\Countable</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-k">new</span> <span class="pl-v">Map</span>(), <span class="pl-k">new</span> \<span class="pl-v">stdClass</span>()] )-&gt;<span class="pl-en">implements</span>( <span class="pl-s">'<span class="pl-s">\Countable</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-k">new</span> <span class="pl-v">Map</span>(), <span class="pl-c1">123</span>] )-&gt;<span class="pl-en">implements</span>( <span class="pl-s">'<span class="pl-s">\Countable</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-k">new</span> <span class="pl-v">Map</span>(), <span class="pl-c1">123</span>] )-&gt;<span class="pl-en">implements</span>( <span class="pl-s">'<span class="pl-s">\Countable</span>'</span>, <span class="pl-c1">true</span> ); <span class="pl-c">// throws \UnexpectedValueException</span> Map::<span class="pl-en">from</span>( [<span class="pl-k">new</span> <span class="pl-v">Map</span>(), <span class="pl-c1">123</span>] )-&gt;<span class="pl-en">implements</span>( <span class="pl-s">'<span class="pl-s">\Countable</span>'</span>, <span class="pl-s">'<span class="pl-s">\RuntimeException</span>'</span> ); <span class="pl-c">// throws \RuntimeException</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">in()</h3><a id="user-content-in" class="anchor" aria-label="Permalink: in()" href="#in"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if the passed element or elements are part of the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function in( $element, bool $strict = false ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> in( <span class="pl-s1"><span class="pl-c1">$</span>element</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>strict</span> = <span class="pl-c1">false</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>mixed|array</strong> <code>$element</code> Element or elements to search for in the map</li> <li>@param <strong>bool</strong> <code>$strict</code> TRUE to check the type too, using FALSE '1' and 1 will be the same</li> <li>@return <strong>bool</strong> TRUE if all elements are available in map, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;in( 'a' ); // true Map::from( ['a', 'b'] )-&gt;in( ['a', 'b'] ); // true Map::from( ['a', 'b'] )-&gt;in( 'x' ); // false Map::from( ['a', 'b'] )-&gt;in( ['a', 'x'] ); // false Map::from( ['1', '2'] )-&gt;in( 2, true ); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">in</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">in</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">in</span>( <span class="pl-s">'<span class="pl-s">x</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">in</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">x</span>'</span>] ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">1</span>'</span>, <span class="pl-s">'<span class="pl-s">2</span>'</span>] )-&gt;<span class="pl-en">in</span>( <span class="pl-c1">2</span>, <span class="pl-c1">true</span> ); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#compare">compare()</a> - Compares the value against all map elements</li> <li><a href="#contains">contains()</a> - Tests if an item exists in the map</li> <li><a href="#includes">includes()</a> - Tests if element is included</li> <li><a href="#none">none()</a> - Tests if none of the elements are part of the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">includes()</h3><a id="user-content-includes" class="anchor" aria-label="Permalink: includes()" href="#includes"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if the passed element or elements are part of the map (alias).</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function includes( $element, bool $strict = false ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> includes( <span class="pl-s1"><span class="pl-c1">$</span>element</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>strict</span> = <span class="pl-c1">false</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>mixed|array</strong> <code>$element</code> Element or elements to search for in the map</li> <li>@param <strong>bool</strong> <code>$strict</code> TRUE to check the type too, using FALSE '1' and 1 will be the same</li> <li>@return <strong>bool</strong> TRUE if all elements are available in map, FALSE if not</li> </ul> <p dir="auto">This method is an alias for <a href="#in">in()</a>. For performance reasons, <code>in()</code> should be preferred because it uses one method call less than <code>includes()</code>.</p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#compare">compare()</a> - Compares the value against all map elements</li> <li><a href="#contains">contains()</a> - Tests if an item exists in the map</li> <li><a href="#in">in()</a> - Tests if element is included</li> <li><a href="#none">none()</a> - Tests if none of the elements are part of the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">index()</h3><a id="user-content-index" class="anchor" aria-label="Permalink: index()" href="#index"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the numerical index of the given key.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function index( $value ) : ?int"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> index( <span class="pl-s1"><span class="pl-c1">$</span>value</span> ) : ?<span class="pl-smi">int</span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|string|int</strong> <code>$value</code> Key to search for or function with (key) parameters return TRUE if key is found</li> <li>@return <strong>int|null</strong> Position of the found value (zero based) or NULL if not found</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [4 =&gt; 'a', 8 =&gt; 'b'] )-&gt;index( '8' ); // 1 Map::from( [4 =&gt; 'a', 8 =&gt; 'b'] )-&gt;index( function( $key ) { return $key == '8'; } ); // 1"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">4</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">8</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">index</span>( <span class="pl-s">'<span class="pl-s">8</span>'</span> ); <span class="pl-c">// 1</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">4</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">8</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">index</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>key</span> == <span class="pl-s">'<span class="pl-s">8</span>'</span>; } ); <span class="pl-c">// 1</span></pre></div> <p dir="auto">Both examples will return "1" because the value "b" is at the second position and the returned index is zero based so the first item has the index "0".</p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#at">at()</a> - Returns the value at the given position</li> <li><a href="#pos">pos()</a> - Returns the numerical index of the value</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">insertAfter()</h3><a id="user-content-insertafter" class="anchor" aria-label="Permalink: insertAfter()" href="#insertafter"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Inserts the value or values after the given element.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function insertAfter( $element, $value ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> insertAfter( <span class="pl-s1"><span class="pl-c1">$</span>element</span>, <span class="pl-s1"><span class="pl-c1">$</span>value</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>mixed</strong> <code>$element</code> Element after the value is inserted</li> <li>@param <strong>mixed</strong> <code>$value</code> Element or list of elements to insert</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">Numerical array indexes are not preserved.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'foo', 'b' =&gt; 'bar'] )-&gt;insertAfter( 'foo', 'baz' ); // ['a' =&gt; 'foo', 0 =&gt; 'baz', 'b' =&gt; 'bar'] Map::from( ['foo', 'bar'] )-&gt;insertAfter( 'foo', ['baz', 'boo'] ); // ['foo', 'baz', 'boo', 'bar'] Map::from( ['foo', 'bar'] )-&gt;insertAfter( null, 'baz' ); // ['foo', 'bar', 'baz']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">insertAfter</span>( <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">baz</span>'</span> ); <span class="pl-c">// ['a' =&gt; 'foo', 0 =&gt; 'baz', 'b' =&gt; 'bar']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">insertAfter</span>( <span class="pl-s">'<span class="pl-s">foo</span>'</span>, [<span class="pl-s">'<span class="pl-s">baz</span>'</span>, <span class="pl-s">'<span class="pl-s">boo</span>'</span>] ); <span class="pl-c">// ['foo', 'baz', 'boo', 'bar']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">insertAfter</span>( <span class="pl-c1">null</span>, <span class="pl-s">'<span class="pl-s">baz</span>'</span> ); <span class="pl-c">// ['foo', 'bar', 'baz']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#insertat">insertAt()</a> - Inserts the item at the given position in the map</li> <li><a href="#insertbefore">insertBefore()</a> - Inserts the value or values before the given element</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">insertAt()</h3><a id="user-content-insertat" class="anchor" aria-label="Permalink: insertAt()" href="#insertat"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Inserts the item at the given position in the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function insertAt( int $pos, $element, $key = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> insertAt( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>pos</span>, <span class="pl-s1"><span class="pl-c1">$</span>element</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$pos</code> Position the element it should be inserted at</li> <li>@param <strong>mixed</strong> <code>$element</code> Element to be inserted</li> <li>@param <strong>mixed|null</strong> <code>$key</code> Element key or NULL to assign an integer key automatically</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'foo', 'b' =&gt; 'bar'] )-&gt;insertAt( 0, 'baz' ); // [0 =&gt; 'baz', 'a' =&gt; 'foo', 'b' =&gt; 'bar'] Map::from( ['a' =&gt; 'foo', 'b' =&gt; 'bar'] )-&gt;insertAt( 1, 'baz', 'c' ); // ['a' =&gt; 'foo', 'c' =&gt; 'baz', 'b' =&gt; 'bar'] Map::from( ['a' =&gt; 'foo', 'b' =&gt; 'bar'] )-&gt;insertAt( 5, 'baz' ); // ['a' =&gt; 'foo', 'b' =&gt; 'bar', 'c' =&gt; 'baz'] Map::from( ['a' =&gt; 'foo', 'b' =&gt; 'bar'] )-&gt;insertAt( -1, 'baz', 'c' ); // ['a' =&gt; 'foo', 'c' =&gt; 'baz', 'b' =&gt; 'bar']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">insertAt</span>( <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">baz</span>'</span> ); <span class="pl-c">// [0 =&gt; 'baz', 'a' =&gt; 'foo', 'b' =&gt; 'bar']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">insertAt</span>( <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">baz</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span> ); <span class="pl-c">// ['a' =&gt; 'foo', 'c' =&gt; 'baz', 'b' =&gt; 'bar']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">insertAt</span>( <span class="pl-c1">5</span>, <span class="pl-s">'<span class="pl-s">baz</span>'</span> ); <span class="pl-c">// ['a' =&gt; 'foo', 'b' =&gt; 'bar', 'c' =&gt; 'baz']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">insertAt</span>( -<span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">baz</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span> ); <span class="pl-c">// ['a' =&gt; 'foo', 'c' =&gt; 'baz', 'b' =&gt; 'bar']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#insertafter">insertAfter()</a> - Inserts the value or values after the given element</li> <li><a href="#insertbefore">insertBefore()</a> - Inserts the value or values before the given element</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">insertBefore()</h3><a id="user-content-insertbefore" class="anchor" aria-label="Permalink: insertBefore()" href="#insertbefore"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Inserts the value or values before the given element.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function insertBefore( $element, $value ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> insertBefore( <span class="pl-s1"><span class="pl-c1">$</span>element</span>, <span class="pl-s1"><span class="pl-c1">$</span>value</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>mixed</strong> <code>$element</code> Element before the value is inserted</li> <li>@param <strong>mixed</strong> <code>$value</code> Element or list of elements to insert</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">Numerical array indexes are not preserved.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'foo', 'b' =&gt; 'bar'] )-&gt;insertBefore( 'bar', 'baz' ); // ['a' =&gt; 'foo', 0 =&gt; 'baz', 'b' =&gt; 'bar'] Map::from( ['foo', 'bar'] )-&gt;insertBefore( 'bar', ['baz', 'boo'] ); // ['foo', 'baz', 'boo', 'bar'] Map::from( ['foo', 'bar'] )-&gt;insertBefore( null, 'baz' ); // ['foo', 'bar', 'baz']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">insertBefore</span>( <span class="pl-s">'<span class="pl-s">bar</span>'</span>, <span class="pl-s">'<span class="pl-s">baz</span>'</span> ); <span class="pl-c">// ['a' =&gt; 'foo', 0 =&gt; 'baz', 'b' =&gt; 'bar']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">insertBefore</span>( <span class="pl-s">'<span class="pl-s">bar</span>'</span>, [<span class="pl-s">'<span class="pl-s">baz</span>'</span>, <span class="pl-s">'<span class="pl-s">boo</span>'</span>] ); <span class="pl-c">// ['foo', 'baz', 'boo', 'bar']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">insertBefore</span>( <span class="pl-c1">null</span>, <span class="pl-s">'<span class="pl-s">baz</span>'</span> ); <span class="pl-c">// ['foo', 'bar', 'baz']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#insertafter">insertAfter()</a> - Inserts the value or values after the given element</li> <li><a href="#insertat">insertAt()</a> - Inserts the item at the given position in the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">inString()</h3><a id="user-content-instring" class="anchor" aria-label="Permalink: inString()" href="#instring"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if the passed value or value are part of the strings in the map.</p> <p dir="auto">This method is deprecated in favor of the multi-byte aware <a href="#strcontains">strContains()</a> method.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function inString( $value, bool $case = true ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> inString( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>case</span> = <span class="pl-c1">true</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>array|string</strong> <code>$value</code> Value or values to compare the map elements, will be casted to string type</li> <li>@param <strong>bool</strong> <code>$case</code> TRUE if comparison is case sensitive, FALSE to ignore upper/lower case</li> <li>@return <strong>bool</strong> TRUE If at least one element matches, FALSE if value is not in any string of the map</li> </ul> <p dir="auto">All scalar values (bool, float, int and string) are casted to string values before comparing to the given value. Non-scalar values in the map are ignored.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['abc'] )-&gt;inString( 'c' ); // true ('abc' contains 'c') Map::from( ['abc'] )-&gt;inString( 'bc' ); // true ('abc' contains 'bc') Map::from( [12345] )-&gt;inString( '23' ); // true ('12345' contains '23') Map::from( [123.4] )-&gt;inString( 23.4 ); // true ('123.4' contains '23.4') Map::from( [12345] )-&gt;inString( false ); // true ('12345' contains '') Map::from( [12345] )-&gt;inString( true ); // true ('12345' contains '1') Map::from( [false] )-&gt;inString( false ); // true ('' contains '') Map::from( ['abc'] )-&gt;inString( '' ); // true ('abc' contains '') Map::from( [''] )-&gt;inString( false ); // true ('' contains '') Map::from( ['abc'] )-&gt;inString( 'BC', false ); // true ('abc' contains 'BC' when case-insentive) Map::from( ['abc', 'def'] )-&gt;inString( ['de', 'xy'] ); // true ('def' contains 'de') Map::from( ['abc', 'def'] )-&gt;inString( ['E', 'x'] ); // false (doesn't contain &quot;E&quot; when case sensitive) Map::from( ['abc', 'def'] )-&gt;inString( 'E' ); // false (doesn't contain &quot;E&quot; when case sensitive) Map::from( [23456] )-&gt;inString( true ); // false ('23456' doesn't contain '1') Map::from( [false] )-&gt;inString( 0 ); // false ('' doesn't contain '0')"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">inString</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span> ); <span class="pl-c">// true ('abc' contains 'c')</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">inString</span>( <span class="pl-s">'<span class="pl-s">bc</span>'</span> ); <span class="pl-c">// true ('abc' contains 'bc')</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">12345</span>] )-&gt;<span class="pl-en">inString</span>( <span class="pl-s">'<span class="pl-s">23</span>'</span> ); <span class="pl-c">// true ('12345' contains '23')</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">123.4</span>] )-&gt;<span class="pl-en">inString</span>( <span class="pl-c1">23.4</span> ); <span class="pl-c">// true ('123.4' contains '23.4')</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">12345</span>] )-&gt;<span class="pl-en">inString</span>( <span class="pl-c1">false</span> ); <span class="pl-c">// true ('12345' contains '')</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">12345</span>] )-&gt;<span class="pl-en">inString</span>( <span class="pl-c1">true</span> ); <span class="pl-c">// true ('12345' contains '1')</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">false</span>] )-&gt;<span class="pl-en">inString</span>( <span class="pl-c1">false</span> ); <span class="pl-c">// true ('' contains '')</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">inString</span>( <span class="pl-s">''</span> ); <span class="pl-c">// true ('abc' contains '')</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">''</span>] )-&gt;<span class="pl-en">inString</span>( <span class="pl-c1">false</span> ); <span class="pl-c">// true ('' contains '')</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">inString</span>( <span class="pl-s">'<span class="pl-s">BC</span>'</span>, <span class="pl-c1">false</span> ); <span class="pl-c">// true ('abc' contains 'BC' when case-insentive)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">def</span>'</span>] )-&gt;<span class="pl-en">inString</span>( [<span class="pl-s">'<span class="pl-s">de</span>'</span>, <span class="pl-s">'<span class="pl-s">xy</span>'</span>] ); <span class="pl-c">// true ('def' contains 'de')</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">def</span>'</span>] )-&gt;<span class="pl-en">inString</span>( [<span class="pl-s">'<span class="pl-s">E</span>'</span>, <span class="pl-s">'<span class="pl-s">x</span>'</span>] ); <span class="pl-c">// false (doesn't contain "E" when case sensitive)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">def</span>'</span>] )-&gt;<span class="pl-en">inString</span>( <span class="pl-s">'<span class="pl-s">E</span>'</span> ); <span class="pl-c">// false (doesn't contain "E" when case sensitive)</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">23456</span>] )-&gt;<span class="pl-en">inString</span>( <span class="pl-c1">true</span> ); <span class="pl-c">// false ('23456' doesn't contain '1')</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">false</span>] )-&gt;<span class="pl-en">inString</span>( <span class="pl-c1">0</span> ); <span class="pl-c">// false ('' doesn't contain '0')</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#strcontains">strContains()</a> - Tests if at least one of the passed strings is part of at least one entry</li> <li><a href="#strcontainsall">strContainsAll()</a> - Tests if all of the entries contains one of the passed strings</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">int()</h3><a id="user-content-int" class="anchor" aria-label="Permalink: int()" href="#int"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns an element by key and casts it to integer if possible.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function int( $key, $default = 0 ) : int"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> int( <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-s1"><span class="pl-c1">$</span>default</span> = <span class="pl-c1">0</span> ) : <span class="pl-smi">int</span></pre></div> <ul dir="auto"> <li>@param <strong>int|string</strong> <code>$key</code> Key or path to the requested item</li> <li>@param <strong>mixed</strong> <code>$default</code> Default value if key isn't found (will be casted to int)</li> <li>@return <strong>int</strong> Value from map or default value</li> </ul> <p dir="auto">This does also work to map values from multi-dimensional arrays by passing the keys of the arrays separated by the delimiter ("/" by default), e.g. <code>key1/key2/key3</code> to get <code>val</code> from <code>['key1' =&gt; ['key2' =&gt; ['key3' =&gt; 'val']]]</code>. The same applies to public properties of objects or objects implementing <code>__isset()</code> and <code>__get()</code> methods.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; true] )-&gt;int( 'a' ); // 1 Map::from( ['a' =&gt; '1'] )-&gt;int( 'a' ); // 1 (casted to integer) Map::from( ['a' =&gt; 1.1] )-&gt;int( 'a' ); // 1 (casted to integer) Map::from( ['a' =&gt; '10'] )-&gt;int( 'a' ); // 10 (casted to integer) Map::from( ['a' =&gt; ['b' =&gt; ['c' =&gt; 1]]] )-&gt;int( 'a/b/c' ); // 1 Map::from( [] )-&gt;int( 'c', function() { return rand( 1, 1 ); } ); // 1 Map::from( [] )-&gt;int( 'a', 1 ); // 1 (default value used) Map::from( [] )-&gt;int( 'a' ); // 0 Map::from( ['b' =&gt; ''] )-&gt;int( 'b' ); // 0 (casted to integer) Map::from( ['a' =&gt; 'abc'] )-&gt;int( 'a' ); // 0 (casted to integer) Map::from( ['b' =&gt; null] )-&gt;int( 'b' ); // 0 (null is not scalar) Map::from( ['b' =&gt; [true]] )-&gt;int( 'b' ); // 0 (arrays are not scalar) Map::from( ['b' =&gt; '#resource'] )-&gt;int( 'b' ); // 0 (resources are not scalar) Map::from( ['b' =&gt; new \stdClass] )-&gt;int( 'b' ); // 0 (objects are not scalar) Map::from( [] )-&gt;int( 'c', new \Exception( 'error' ) ); // throws exception"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">true</span>] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// 1</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">1</span>'</span>] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// 1 (casted to integer)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1.1</span>] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// 1 (casted to integer)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">10</span>'</span>] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// 10 (casted to integer)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-c1">1</span>]]] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">a/b/c</span>'</span> ); <span class="pl-c">// 1</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-k">function</span>() { <span class="pl-k">return</span> <span class="pl-en">rand</span>( <span class="pl-c1">1</span>, <span class="pl-c1">1</span> ); } ); <span class="pl-c">// 1</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">1</span> ); <span class="pl-c">// 1 (default value used)</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// 0</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">''</span>] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// 0 (casted to integer)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// 0 (casted to integer)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">null</span>] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// 0 (null is not scalar)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; [<span class="pl-c1">true</span>]] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// 0 (arrays are not scalar)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">#resource</span>'</span>] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// 0 (resources are not scalar)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-k">new</span> \<span class="pl-v">stdClass</span>] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// 0 (objects are not scalar)</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">int</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-k">new</span> \<span class="pl-v">Exception</span>( <span class="pl-s">'<span class="pl-s">error</span>'</span> ) ); <span class="pl-c">// throws exception</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#bool">bool()</a> - Returns an element by key and casts it to boolean if possible</li> <li><a href="#cast">cast()</a> - Casts all entries to the passed type</li> <li><a href="#get">get()</a> - Returns an element from the map by key</li> <li><a href="#float">float()</a> - Returns an element by key and casts it to float if possible</li> <li><a href="#string">string()</a> - Returns an element by key and casts it to string if possible</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">intersect()</h3><a id="user-content-intersect" class="anchor" aria-label="Permalink: intersect()" href="#intersect"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns all values in a new map that are available in both, the map and the given elements.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function intersect( iterable $elements, callable $callback = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> intersect( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>elements</span>, <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string,mixed&gt;</strong> <code>$elements</code> List of elements</li> <li>@param <strong>callable|null</strong> <code>$callback</code> Function with (valueA, valueB) parameters and returns -1 (&lt;), 0 (=) and 1 (&gt;)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The keys are preserved using this method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'foo', 'b' =&gt; 'bar'] )-&gt;intersect( ['bar'] ); // ['b' =&gt; 'bar']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">intersect</span>( [<span class="pl-s">'<span class="pl-s">bar</span>'</span>] ); <span class="pl-c">// ['b' =&gt; 'bar']</span></pre></div> <p dir="auto">If a callback is passed, the given function will be used to compare the values. The function must accept two parameters (vaA, valB) and must return -1 if value A is smaller than value B, 0 if both are equal and 1 if value A is greater than value B. Both, a method name and an anonymous function can be passed:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [0 =&gt; 'a'] )-&gt;intersect( [0 =&gt; 'A'], 'strcasecmp' ); // ['a'] Map::from( ['b' =&gt; 'a'] )-&gt;intersect( ['B' =&gt; 'A'], 'strcasecmp' ); // ['a'] Map::from( ['b' =&gt; 'a'] )-&gt;intersect( ['c' =&gt; 'A'], function( $valA, $valB ) { return strtolower( $valA ) &lt;=&gt; strtolower( $valB ); } ); // ['a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">intersect</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>], <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// ['a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">intersect</span>( [<span class="pl-s">'<span class="pl-s">B</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>], <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// ['a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">intersect</span>( [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>], <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>valA</span>, <span class="pl-s1"><span class="pl-c1">$</span>valB</span> ) { <span class="pl-k">return</span> <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>valA</span> ) &lt;=&gt; <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>valB</span> ); } ); <span class="pl-c">// ['a']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#intersectassoc">intersectAssoc()</a> - Returns all values in a new map that are available in both, the map and the given elements while comparing the keys too</li> <li><a href="#intersectkeys">intersectKeys()</a> - Returns all values in a new map that are available in both, the map and the given elements by comparing the keys only</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">intersectAssoc()</h3><a id="user-content-intersectassoc" class="anchor" aria-label="Permalink: intersectAssoc()" href="#intersectassoc"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns all values in a new map that are available in both, the map and the given elements while comparing the keys too.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function intersectAssoc( iterable $elements, callable $callback = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> intersectAssoc( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>elements</span>, <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string,mixed&gt;</strong> <code>$elements</code> List of elements</li> <li>@param <strong>callable|null</strong> <code>$callback</code> Function with (valueA, valueB) parameters and returns -1 (&lt;), 0 (=) and 1 (&gt;)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The keys are preserved using this method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'foo', 'b' =&gt; 'bar'] )-&gt;intersectAssoc( new Map( ['foo', 'b' =&gt; 'bar'] ) ); // ['a' =&gt; 'foo']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">intersectAssoc</span>( <span class="pl-k">new</span> <span class="pl-v">Map</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] ) ); <span class="pl-c">// ['a' =&gt; 'foo']</span></pre></div> <p dir="auto">If a callback is passed, the given function will be used to compare the values. The function must accept two parameters (valA, valB) and must return -1 if value A is smaller than value B, 0 if both are equal and 1 if value A is greater than value B. Both, a method name and an anonymous function can be passed:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [0 =&gt; 'a'] )-&gt;intersectAssoc( [0 =&gt; 'A'], 'strcasecmp' ); // [0 =&gt; 'a'] Map::from( ['b' =&gt; 'a'] )-&gt;intersectAssoc( ['B' =&gt; 'A'], 'strcasecmp' ); // ['b' =&gt; 'a'] Map::from( ['b' =&gt; 'a'] )-&gt;intersectAssoc( ['c' =&gt; 'A'], function( $valA, $valB ) { return strtolower( $valA ) &lt;=&gt; strtolower( $valB ); } ); // []"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">intersectAssoc</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>], <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// [0 =&gt; 'a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">intersectAssoc</span>( [<span class="pl-s">'<span class="pl-s">B</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>], <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// ['b' =&gt; 'a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">intersectAssoc</span>( [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>], <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>valA</span>, <span class="pl-s1"><span class="pl-c1">$</span>valB</span> ) { <span class="pl-k">return</span> <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>valA</span> ) &lt;=&gt; <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>valB</span> ); } ); <span class="pl-c">// []</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#intersect">intersect()</a> - Returns all values in a new map that are available in both, the map and the given elements</li> <li><a href="#intersectkeys">intersectKeys()</a> - Returns all values in a new map that are available in both, the map and the given elements by comparing the keys only</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">intersectKeys()</h3><a id="user-content-intersectkeys" class="anchor" aria-label="Permalink: intersectKeys()" href="#intersectkeys"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns all values in a new map that are available in both, the map and the given elements by comparing the keys only.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function intersectKeys( iterable $elements, callable $callback = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> intersectKeys( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>elements</span>, <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string,mixed&gt;</strong> <code>$elements</code> List of elements</li> <li>@param <strong>callable|null</strong> <code>$callback</code> Function with (keyA, keyB) parameters and returns -1 (&lt;), 0 (=) and 1 (&gt;)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The keys are preserved using this method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'foo', 'b' =&gt; 'bar'] )-&gt;intersectKeys( new Map( ['foo', 'b' =&gt; 'baz'] ) ); // ['b' =&gt; 'bar']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">intersectKeys</span>( <span class="pl-k">new</span> <span class="pl-v">Map</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">baz</span>'</span>] ) ); <span class="pl-c">// ['b' =&gt; 'bar']</span></pre></div> <p dir="auto">If a callback is passed, the given function will be used to compare the keys. The function must accept two parameters (key A and B) and must return -1 if key A is smaller than key B, 0 if both are equal and 1 if key A is greater than key B. Both, a method name and an anonymous function can be passed:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [0 =&gt; 'a'] )-&gt;intersectKeys( [0 =&gt; 'A'], 'strcasecmp' ); // [0 =&gt; 'a'] Map::from( ['b' =&gt; 'a'] )-&gt;intersectKeys( ['B' =&gt; 'X'], 'strcasecmp' ); // ['b' =&gt; 'a'] Map::from( ['b' =&gt; 'a'] )-&gt;intersectKeys( ['c' =&gt; 'a'], function( $keyA, $keyB ) { return strtolower( $keyA ) &lt;=&gt; strtolower( $keyB ); } ); // []"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">intersectKeys</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>], <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// [0 =&gt; 'a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">intersectKeys</span>( [<span class="pl-s">'<span class="pl-s">B</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">X</span>'</span>], <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// ['b' =&gt; 'a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">intersectKeys</span>( [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>], <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>keyA</span>, <span class="pl-s1"><span class="pl-c1">$</span>keyB</span> ) { <span class="pl-k">return</span> <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>keyA</span> ) &lt;=&gt; <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>keyB</span> ); } ); <span class="pl-c">// []</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#intersect">intersect()</a> - Returns all values in a new map that are available in both, the map and the given elements</li> <li><a href="#intersectassoc">intersectAssoc()</a> - Returns all values in a new map that are available in both, the map and the given elements while comparing the keys too</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">is()</h3><a id="user-content-is" class="anchor" aria-label="Permalink: is()" href="#is"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if the map consists of the same keys and values</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function is( iterable $list, bool $strict = false ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> is( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>list</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>strict</span> = <span class="pl-c1">false</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string,mixed&gt;</strong> <code>$list</code> List of key/value pairs to compare with</li> <li>@param <strong>bool</strong> <code>$strict</code> TRUE for comparing order of elements too, FALSE for key/values only</li> <li>@return <strong>bool</strong> TRUE if given list is equal, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;is( ['b', 'a'] ); // true Map::from( ['a', 'b'] )-&gt;is( ['b', 'a'], true ); // false Map::from( [1, 2] )-&gt;is( ['1', '2'] ); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">is</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span>] ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">is</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span>], <span class="pl-c1">true</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>] )-&gt;<span class="pl-en">is</span>( [<span class="pl-s">'<span class="pl-s">1</span>'</span>, <span class="pl-s">'<span class="pl-s">2</span>'</span>] ); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#equals">equals()</a> - Tests if the passed elements are equal to the elements in the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">isEmpty()</h3><a id="user-content-isempty" class="anchor" aria-label="Permalink: isEmpty()" href="#isempty"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Determines if the map is empty or not.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function isEmpty() : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> isEmpty() : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@return <strong>bool</strong> TRUE if map is empty, FALSE if not</li> </ul> <p dir="auto">The method is equivalent to <a href="#empty">empty()</a>.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [] )-&gt;isEmpty(); // true Map::from( ['a'] )-isEmpty(); // false"><pre>Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">isEmpty</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>] )-<span class="pl-en">isEmpty</span>(); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#empty">empty()</a> - Determines if the map is empty or not</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">isList()</h3><a id="user-content-islist" class="anchor" aria-label="Permalink: isList()" href="#islist"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Checks if the map contains a list of subsequentially numbered keys.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function isList() : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> isList() : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@return bool TRUE if the map is a list, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [] )-&gt;isList(); // true Map::from( [1, 3, 2] )-&gt;isList(); // true, keys are 0, 1 and 2 Map::from( [0 =&gt; 1, 1 =&gt; 2, 2 =&gt; 3] )-&gt;isList(); // true, keys are consecutive Map::from( [1 =&gt; 1, 2 =&gt; 2, 3 =&gt; 3] )-&gt;isList(); // false, keys doesn't start with 0 Map::from( [0 =&gt; 1, 2 =&gt; 2, 3 =&gt; 3] )-&gt;isList(); // false, keys are not consecutive Map::from( ['a' =&gt; 1, 1 =&gt; 2, 'c' =&gt; 3] )-&gt;isList(); // false, keys are not all numeric"><pre>Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">isList</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">3</span>, <span class="pl-c1">2</span>] )-&gt;<span class="pl-en">isList</span>(); <span class="pl-c">// true, keys are 0, 1 and 2</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-c1">2</span> =&gt; <span class="pl-c1">3</span>] )-&gt;<span class="pl-en">isList</span>(); <span class="pl-c">// true, keys are consecutive</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-c1">2</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-c1">3</span> =&gt; <span class="pl-c1">3</span>] )-&gt;<span class="pl-en">isList</span>(); <span class="pl-c">// false, keys doesn't start with 0</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-c1">2</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-c1">3</span> =&gt; <span class="pl-c1">3</span>] )-&gt;<span class="pl-en">isList</span>(); <span class="pl-c">// false, keys are not consecutive</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-c1">3</span>] )-&gt;<span class="pl-en">isList</span>(); <span class="pl-c">// false, keys are not all numeric</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#isobject">isObject()</a> - Determines if all entries are objects</li> <li><a href="#isnumeric">isNumeric()</a> - Determines if all entries are numeric values</li> <li><a href="#isscalar">isScalar()</a> - Determines if all entries are scalar values</li> <li><a href="#isstring">isString()</a> - Determines if all entries are string values</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">isObject()</h3><a id="user-content-isobject" class="anchor" aria-label="Permalink: isObject()" href="#isobject"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Determines if all entries are objects.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function isObject() : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> isObject() : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@return <strong>bool</strong> TRUE if all map entries are objects, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [] )-&gt;isObject(); // true Map::from( [new stdClass] )-&gt;isObject(); // true Map::from( [1] )-&gt;isObject(); // false"><pre>Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">isObject</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-k">new</span> <span class="pl-v">stdClass</span>] )-&gt;<span class="pl-en">isObject</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>] )-&gt;<span class="pl-en">isObject</span>(); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#islist">isList()</a> - Checks if the map contains a list of subsequentially numbered keys</li> <li><a href="#isnumeric">isNumeric()</a> - Determines if all entries are numeric values</li> <li><a href="#isscalar">isScalar()</a> - Determines if all entries are scalar values</li> <li><a href="#isstring">isString()</a> - Determines if all entries are string values</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">isNumeric()</h3><a id="user-content-isnumeric" class="anchor" aria-label="Permalink: isNumeric()" href="#isnumeric"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Determines if all entries are numeric values.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function isNumeric() : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> isNumeric() : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@return <strong>bool</strong> TRUE if all map entries are numeric values, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [] )-&gt;isNumeric(); // true Map::from( [1] )-&gt;isNumeric(); // true Map::from( [1.1] )-&gt;isNumeric(); // true Map::from( [010] )-&gt;isNumeric(); // true Map::from( [0x10] )-&gt;isNumeric(); // true Map::from( [0b10] )-&gt;isNumeric(); // true Map::from( ['010'] )-&gt;isNumeric(); // true Map::from( ['10'] )-&gt;isNumeric(); // true Map::from( ['10.1'] )-&gt;isNumeric(); // true Map::from( [' 10 '] )-&gt;isNumeric(); // true Map::from( ['10e2'] )-&gt;isNumeric(); // true Map::from( ['0b10'] )-&gt;isNumeric(); // false Map::from( ['0x10'] )-&gt;isNumeric(); // false Map::from( ['null'] )-&gt;isNumeric(); // false Map::from( [null] )-&gt;isNumeric(); // false Map::from( [true] )-&gt;isNumeric(); // false Map::from( [[]] )-&gt;isNumeric(); // false Map::from( [''] )-&gt;isNumeric(); // false"><pre>Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1.1</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">010</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0x10</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0b10</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">010</span>'</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">10</span>'</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">10.1</span>'</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s"> 10 </span>'</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">10e2</span>'</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">0b10</span>'</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">0x10</span>'</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">null</span>'</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">null</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">true</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [[]] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">''</span>] )-&gt;<span class="pl-en">isNumeric</span>(); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#islist">isList()</a> - Checks if the map contains a list of subsequentially numbered keys</li> <li><a href="#isobject">isObject()</a> - Determines if all entries are objects</li> <li><a href="#isscalar">isScalar()</a> - Determines if all entries are scalar values</li> <li><a href="#isstring">isString()</a> - Determines if all entries are string values</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">isScalar()</h3><a id="user-content-isscalar" class="anchor" aria-label="Permalink: isScalar()" href="#isscalar"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Determines if all entries are scalar values.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function isScalar() : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> isScalar() : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@return <strong>bool</strong> TRUE if all map entries are scalar values, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [] )-&gt;isScalar(); // true Map::from( [1] )-&gt;isScalar(); // true Map::from( [1.1] )-&gt;isScalar(); // true Map::from( ['abc'] )-&gt;isScalar(); // true Map::from( [true, false] )-&gt;isScalar(); // true Map::from( [new stdClass] )-&gt;isScalar(); // false Map::from( [resource] )-&gt;isScalar(); // false Map::from( [null] )-&gt;isScalar(); // false Map::from( [[1]] )-&gt;isScalar(); // false"><pre>Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">isScalar</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>] )-&gt;<span class="pl-en">isScalar</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1.1</span>] )-&gt;<span class="pl-en">isScalar</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">isScalar</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">true</span>, <span class="pl-c1">false</span>] )-&gt;<span class="pl-en">isScalar</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-k">new</span> <span class="pl-v">stdClass</span>] )-&gt;<span class="pl-en">isScalar</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [resource] )-&gt;<span class="pl-en">isScalar</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">null</span>] )-&gt;<span class="pl-en">isScalar</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [[<span class="pl-c1">1</span>]] )-&gt;<span class="pl-en">isScalar</span>(); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#islist">isList()</a> - Checks if the map contains a list of subsequentially numbered keys</li> <li><a href="#isobject">isObject()</a> - Determines if all entries are objects</li> <li><a href="#isnumeric">isNumeric()</a> - Determines if all entries are numeric values</li> <li><a href="#isstring">isString()</a> - Determines if all entries are string values</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">isString()</h3><a id="user-content-isstring" class="anchor" aria-label="Permalink: isString()" href="#isstring"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Determines if all entries are string values.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function isString() : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> isString() : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@return <strong>bool</strong> TRUE if all map entries are string values, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['abc'] )-&gt;isString(); // true Map::from( [] )-&gt;isString(); // true Map::from( [1] )-&gt;isString(); // false Map::from( [1.1] )-&gt;isString(); // false Map::from( [true, false] )-&gt;isString(); // false Map::from( [new stdClass] )-&gt;isString(); // false Map::from( [resource] )-&gt;isString(); // false Map::from( [null] )-&gt;isString(); // false Map::from( [[1]] )-&gt;isString(); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">isString</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">isString</span>(); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>] )-&gt;<span class="pl-en">isString</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1.1</span>] )-&gt;<span class="pl-en">isString</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">true</span>, <span class="pl-c1">false</span>] )-&gt;<span class="pl-en">isString</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-k">new</span> <span class="pl-v">stdClass</span>] )-&gt;<span class="pl-en">isString</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [resource] )-&gt;<span class="pl-en">isString</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">null</span>] )-&gt;<span class="pl-en">isString</span>(); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [[<span class="pl-c1">1</span>]] )-&gt;<span class="pl-en">isString</span>(); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#islist">isList()</a> - Checks if the map contains a list of subsequentially numbered keys</li> <li><a href="#isobject">isObject()</a> - Determines if all entries are objects</li> <li><a href="#isnumeric">isNumeric()</a> - Determines if all entries are numeric values</li> <li><a href="#isscalar">isScalar()</a> - Determines if all entries are scalar values</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">join()</h3><a id="user-content-join" class="anchor" aria-label="Permalink: join()" href="#join"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Concatenates the string representation of all elements.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function join( $glue = '' ) : string"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> join( <span class="pl-s1"><span class="pl-c1">$</span>glue</span> = <span class="pl-s">''</span> ) : <span class="pl-smi">string</span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$glue</code> Character or string added between elements</li> <li>@return <strong>string</strong> String of concatenated map elements</li> </ul> <p dir="auto">Objects that implement <code>__toString()</code> does also work, otherwise (and in case of arrays) a PHP notice is generated. NULL and FALSE values are treated as empty strings.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b', false] )-&gt;join(); // 'ab' Map::from( ['a', 'b', null, false] )-&gt;join( '-' ); // 'a-b--'"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">false</span>] )-&gt;<span class="pl-en">join</span>(); <span class="pl-c">// 'ab'</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">null</span>, <span class="pl-c1">false</span>] )-&gt;<span class="pl-en">join</span>( <span class="pl-s">'<span class="pl-s">-</span>'</span> ); <span class="pl-c">// 'a-b--'</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">jsonSerialize()</h3><a id="user-content-jsonserialize" class="anchor" aria-label="Permalink: jsonSerialize()" href="#jsonserialize"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Specifies the data which should be serialized to JSON by json_encode().</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function jsonSerialize()"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> jsonSerialize()</pre></div> <ul dir="auto"> <li>@return <strong>array&lt;int|string,mixed&gt;</strong> Data to serialize to JSON</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="json_encode( Map::from( ['a', 'b'] ) ); // [&quot;a&quot;, &quot;b&quot;] json_encode( Map::from( ['a' =&gt; 0, 'b' =&gt; 1] ) ); // {&quot;a&quot;:0,&quot;b&quot;:1}"><pre><span class="pl-en">json_encode</span>( Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] ) ); <span class="pl-c">// ["a", "b"]</span> <span class="pl-en">json_encode</span>( Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">1</span>] ) ); <span class="pl-c">// {"a":0,"b":1}</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">keys()</h3><a id="user-content-keys" class="anchor" aria-label="Permalink: keys()" href="#keys"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the keys of the map elements in a new map object.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function keys() : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> keys() : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] ); // [0, 1] Map::from( ['a' =&gt; 0, 'b' =&gt; 1] ); // ['a', 'b']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] ); <span class="pl-c">// [0, 1]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">1</span>] ); <span class="pl-c">// ['a', 'b']</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">krsort()</h3><a id="user-content-krsort" class="anchor" aria-label="Permalink: krsort()" href="#krsort"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts the elements by their keys in reverse order.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function krsort( int $options = SORT_REGULAR ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> krsort( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">SORT_REGULAR</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Sort options for <code>krsort()</code></li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The parameter modifies how the keys are compared. Possible values are:</p> <ul dir="auto"> <li>SORT_REGULAR : compare elements normally (don't change types)</li> <li>SORT_NUMERIC : compare elements numerically</li> <li>SORT_STRING : compare elements as strings</li> <li>SORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by <code>setlocale()</code></li> <li>SORT_NATURAL : compare elements as strings using "natural ordering" like <code>natsort()</code></li> <li>SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively</li> </ul> <p dir="auto">The keys are preserved using this method and no new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['b' =&gt; 0, 'a' =&gt; 1] )-&gt;krsort(); // ['a' =&gt; 1, 'b' =&gt; 0] Map::from( [1 =&gt; 'a', 0 =&gt; 'b'] )-&gt;krsort(); // [0 =&gt; 'b', 1 =&gt; 'a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>] )-&gt;<span class="pl-en">krsort</span>(); <span class="pl-c">// ['a' =&gt; 1, 'b' =&gt; 0]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">krsort</span>(); <span class="pl-c">// [0 =&gt; 'b', 1 =&gt; 'a']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#krsorted">krsorted()</a> - Sorts a copy of the elements by their keys in reverse order</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">krsorted()</h3><a id="user-content-krsorted" class="anchor" aria-label="Permalink: krsorted()" href="#krsorted"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts a copy of the elements by their keys in reverse order.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function krsorted( int $options = SORT_REGULAR ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> krsorted( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">SORT_REGULAR</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Sort options for <code>krsort()</code></li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The parameter modifies how the keys are compared. Possible values are:</p> <ul dir="auto"> <li>SORT_REGULAR : compare elements normally (don't change types)</li> <li>SORT_NUMERIC : compare elements numerically</li> <li>SORT_STRING : compare elements as strings</li> <li>SORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by <code>setlocale()</code></li> <li>SORT_NATURAL : compare elements as strings using "natural ordering" like <code>natsort()</code></li> <li>SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively</li> </ul> <p dir="auto">The keys are preserved using this method and a new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['b' =&gt; 0, 'a' =&gt; 1] )-&gt;krsorted(); // ['a' =&gt; 1, 'b' =&gt; 0] Map::from( [1 =&gt; 'a', 0 =&gt; 'b'] )-&gt;krsorted(); // [0 =&gt; 'b', 1 =&gt; 'a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>] )-&gt;<span class="pl-en">krsorted</span>(); <span class="pl-c">// ['a' =&gt; 1, 'b' =&gt; 0]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">krsorted</span>(); <span class="pl-c">// [0 =&gt; 'b', 1 =&gt; 'a']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#krsort">krsort()</a> - Sorts the elements by their keys in reverse order</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">krsorted()</h3><a id="user-content-krsorted-1" class="anchor" aria-label="Permalink: krsorted()" href="#krsorted-1"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts a copy of the elements by their keys in reverse order.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function krsorted( int $options = SORT_REGULAR ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> krsorted( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">SORT_REGULAR</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Sort options for <code>krsort()</code></li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The parameter modifies how the keys are compared. Possible values are:</p> <ul dir="auto"> <li>SORT_REGULAR : compare elements normally (don't change types)</li> <li>SORT_NUMERIC : compare elements numerically</li> <li>SORT_STRING : compare elements as strings</li> <li>SORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by <code>setlocale()</code></li> <li>SORT_NATURAL : compare elements as strings using "natural ordering" like <code>natsort()</code></li> <li>SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively</li> </ul> <p dir="auto">The keys are preserved using this method and a new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['b' =&gt; 0, 'a' =&gt; 1] )-&gt;krsorted(); // ['a' =&gt; 1, 'b' =&gt; 0] Map::from( [1 =&gt; 'a', 0 =&gt; 'b'] )-&gt;krsorted(); // [0 =&gt; 'b', 1 =&gt; 'a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>] )-&gt;<span class="pl-en">krsorted</span>(); <span class="pl-c">// ['a' =&gt; 1, 'b' =&gt; 0]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">krsorted</span>(); <span class="pl-c">// [0 =&gt; 'b', 1 =&gt; 'a']</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">ksort()</h3><a id="user-content-ksort" class="anchor" aria-label="Permalink: ksort()" href="#ksort"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts the elements by their keys.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function ksort( int $options = SORT_REGULAR ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> ksort( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">SORT_REGULAR</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Sort options for <code>ksort()</code></li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The parameter modifies how the keys are compared. Possible values are:</p> <ul dir="auto"> <li>SORT_REGULAR : compare elements normally (don't change types)</li> <li>SORT_NUMERIC : compare elements numerically</li> <li>SORT_STRING : compare elements as strings</li> <li>SORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by <code>setlocale()</code></li> <li>SORT_NATURAL : compare elements as strings using "natural ordering" like <code>natsort()</code></li> <li>SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively</li> </ul> <p dir="auto">The keys are preserved using this method and no new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['b' =&gt; 0, 'a' =&gt; 1] )-&gt;ksort(); // ['a' =&gt; 1, 'b' =&gt; 0] Map::from( [1 =&gt; 'a', 0 =&gt; 'b'] )-&gt;ksort(); // [0 =&gt; 'b', 1 =&gt; 'a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>] )-&gt;<span class="pl-en">ksort</span>(); <span class="pl-c">// ['a' =&gt; 1, 'b' =&gt; 0]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">ksort</span>(); <span class="pl-c">// [0 =&gt; 'b', 1 =&gt; 'a']</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">ksorted()</h3><a id="user-content-ksorted" class="anchor" aria-label="Permalink: ksorted()" href="#ksorted"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts a copy of the elements by their keys.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function ksorted( int $options = SORT_REGULAR ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> ksorted( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">SORT_REGULAR</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Sort options for <code>ksort()</code></li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The parameter modifies how the keys are compared. Possible values are:</p> <ul dir="auto"> <li>SORT_REGULAR : compare elements normally (don't change types)</li> <li>SORT_NUMERIC : compare elements numerically</li> <li>SORT_STRING : compare elements as strings</li> <li>SORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by <code>setlocale()</code></li> <li>SORT_NATURAL : compare elements as strings using "natural ordering" like <code>natsort()</code></li> <li>SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively</li> </ul> <p dir="auto">The keys are preserved using this method and a new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['b' =&gt; 0, 'a' =&gt; 1] )-&gt;ksorted(); // ['a' =&gt; 1, 'b' =&gt; 0] Map::from( [1 =&gt; 'a', 0 =&gt; 'b'] )-&gt;ksorted(); // [0 =&gt; 'b', 1 =&gt; 'a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>] )-&gt;<span class="pl-en">ksorted</span>(); <span class="pl-c">// ['a' =&gt; 1, 'b' =&gt; 0]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">ksorted</span>(); <span class="pl-c">// [0 =&gt; 'b', 1 =&gt; 'a']</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">last()</h3><a id="user-content-last" class="anchor" aria-label="Permalink: last()" href="#last"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the last element from the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function last( $default = null )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> last( <span class="pl-s1"><span class="pl-c1">$</span>default</span> = <span class="pl-c1">null</span> )</pre></div> <ul dir="auto"> <li>@param <strong>mixed</strong> <code>$default</code> Default value, closure or exception if the map contains no elements</li> <li>@return <strong>mixed</strong> Last value of map, (generated) default value or an exception</li> </ul> <p dir="auto">Using this method doesn't affect the internal array pointer.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;last(); // 'b' Map::from( [] )-&gt;last( 'x' ); // 'x' Map::from( [] )-&gt;last( new \Exception( 'error' ) ); // throws \Exception Map::from( [] )-&gt;last( function() { return rand(); } ); // random integer"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">last</span>(); <span class="pl-c">// 'b'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">last</span>( <span class="pl-s">'<span class="pl-s">x</span>'</span> ); <span class="pl-c">// 'x'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">last</span>( <span class="pl-k">new</span> \<span class="pl-v">Exception</span>( <span class="pl-s">'<span class="pl-s">error</span>'</span> ) ); <span class="pl-c">// throws \Exception</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">last</span>( <span class="pl-k">function</span>() { <span class="pl-k">return</span> <span class="pl-en">rand</span>(); } ); <span class="pl-c">// random integer</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#first">first()</a> - Returns the first element from the map</li> <li><a href="#firstkey">firstKey()</a> - Returns the key of the first element from the map</li> <li><a href="#lastkey">lastKey()</a> - Returns the key of the last element from the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">lastKey()</h3><a id="user-content-lastkey" class="anchor" aria-label="Permalink: lastKey()" href="#lastkey"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the key of the last element from the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function lastKey( $default = null )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> lastKey( <span class="pl-s1"><span class="pl-c1">$</span>default</span> = <span class="pl-c1">null</span> )</pre></div> <ul dir="auto"> <li>@param <strong>mixed</strong> <code>$default</code> Default value, closure or exception if the map contains no elements</li> <li>@return <strong>mixed</strong> Last key of map, (generated) default value or an exception</li> </ul> <p dir="auto">Using this method doesn't affect the internal array pointer.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 'b' =&gt; 2] )-&gt;lastKey(); // 'b' Map::from( [] )-&gt;lastKey( 'x' ); // 'x' Map::from( [] )-&gt;lastKey( new \Exception( 'error' ) ); // throws \Exception Map::from( [] )-&gt;lastKey( function() { return rand(); } ); // random integer"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">2</span>] )-&gt;<span class="pl-en">lastKey</span>(); <span class="pl-c">// 'b'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">lastKey</span>( <span class="pl-s">'<span class="pl-s">x</span>'</span> ); <span class="pl-c">// 'x'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">lastKey</span>( <span class="pl-k">new</span> \<span class="pl-v">Exception</span>( <span class="pl-s">'<span class="pl-s">error</span>'</span> ) ); <span class="pl-c">// throws \Exception</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">lastKey</span>( <span class="pl-k">function</span>() { <span class="pl-k">return</span> <span class="pl-en">rand</span>(); } ); <span class="pl-c">// random integer</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#first">first()</a> - Returns the first element from the map</li> <li><a href="#firstkey">firstKey()</a> - Returns the key of the first element from the map</li> <li><a href="#last">last()</a> - Returns the last element from the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">ltrim()</h3><a id="user-content-ltrim" class="anchor" aria-label="Permalink: ltrim()" href="#ltrim"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Removes the passed characters from the left of all strings.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function ltrim( string $chars = &quot; \n\r\t\v\x00&quot; ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> ltrim( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>chars</span> = <span class="pl-s">"<span class="pl-s"> </span>\n\r\t\v\x00"</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$chars</code> List of characters to trim</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [&quot; abc\n&quot;, &quot;\tcde\r\n&quot;] )-&gt;ltrim(); // [&quot;abc\n&quot;, &quot;cde\r\n&quot;] Map::from( [&quot;a b c&quot;, &quot;cbxa&quot;] )-&gt;ltrim( 'abc' ); // [&quot; b c&quot;, &quot;xa&quot;]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">"<span class="pl-s"> abc</span>\n"</span>, <span class="pl-s">"\t<span class="pl-s">cde</span>\r\n"</span>] )-&gt;<span class="pl-en">ltrim</span>(); <span class="pl-c">// ["abc\n", "cde\r\n"]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">"<span class="pl-s">a b c</span>"</span>, <span class="pl-s">"<span class="pl-s">cbxa</span>"</span>] )-&gt;<span class="pl-en">ltrim</span>( <span class="pl-s">'<span class="pl-s">abc</span>'</span> ); <span class="pl-c">// [" b c", "xa"]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#ltrim">ltrim()</a> - Removes the passed characters from the left of all strings</li> <li><a href="#rtrim">rtrim()</a> - Removes the passed characters from the right of all strings</li> <li><a href="#trim">trim()</a> - Removes the passed characters from the left/right of all strings</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">map()</h3><a id="user-content-map" class="anchor" aria-label="Permalink: map()" href="#map"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Maps new values to the existing keys using the passed function and returns a new map for the result.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function map( callable $callback ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> map( <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>callable</strong> <code>$callback</code> Function with (value, key) parameters and returns computed result</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with the original keys and the computed values</li> </ul> <p dir="auto">The keys are preserved using this method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 2, 'b' =&gt; 4] )-&gt;map( function( $value, $key ) { return $value * 2; } ); // ['a' =&gt; 4, 'b' =&gt; 8]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">4</span>] )-&gt;<span class="pl-en">map</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> * <span class="pl-c1">2</span>; } ); <span class="pl-c">// ['a' =&gt; 4, 'b' =&gt; 8]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#col">col()</a> - Returns the values of a single column/property from an array of arrays or list of elements in a new map</li> <li><a href="#pluck">pluck()</a> - Creates a key/value mapping (alias)</li> <li><a href="#pluck">rekey()</a> - Changes the keys according to the passed function</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">max()</h3><a id="user-content-max" class="anchor" aria-label="Permalink: max()" href="#max"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the maximum value of all elements.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function max( $col = null )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> max( <span class="pl-s1"><span class="pl-c1">$</span>col</span> = <span class="pl-c1">null</span> )</pre></div> <ul dir="auto"> <li>@param <strong>Closure|string|null</strong> <code>$col</code> Closure, key in the nested array or object to check for</li> <li>@return <strong>mixed</strong> Maximum value or NULL if there are no elements in the map</li> </ul> <p dir="auto">NULL values are removed before the comparison. If there are no values or all values are NULL, NULL is returned.</p> <p dir="auto">This does also work to map values from multi-dimensional arrays by passing the keys of the arrays separated by the delimiter ("/" by default), e.g. <code>key1/key2/key3</code> to get <code>val</code> from <code>['key1' =&gt; ['key2' =&gt; ['key3' =&gt; 'val']]]</code>. The same applies to public properties of objects or objects implementing <code>__isset()</code> and <code>__get()</code> methods.</p> <p dir="auto">Be careful comparing elements of different types because this can have unpredictable results due to the <a href="https://www.php.net/manual/en/language.operators.comparison.php" rel="nofollow">PHP comparison rules</a></p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [1, 3, 2, 5, 4] )-&gt;max(); // 5 Map::from( ['bar', 'foo', 'baz'] )-&gt;max(); // 'foo' Map::from( [['p' =&gt; 30], ['p' =&gt; 50], ['p' =&gt; 10]] )-&gt;max( 'p' ); // 50 Map::from( [['i' =&gt; ['p' =&gt; 30]], ['i' =&gt; ['p' =&gt; 50]]] )-&gt;max( 'i/p' ); // 50 Map::from( [['i' =&gt; ['p' =&gt; 30]], ['i' =&gt; ['p' =&gt; 50]]] )-&gt;max( fn( $val, $key ) =&gt; $val['i']['p'] ?? null ) // 50 Map::from( [50, 10, 30] )-&gt;max( fn( $val, $key ) =&gt; $key &gt; 0 ? $val : null ) // 30"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">3</span>, <span class="pl-c1">2</span>, <span class="pl-c1">5</span>, <span class="pl-c1">4</span>] )-&gt;<span class="pl-en">max</span>(); <span class="pl-c">// 5</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">bar</span>'</span>, <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">baz</span>'</span>] )-&gt;<span class="pl-en">max</span>(); <span class="pl-c">// 'foo'</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">30</span>], [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">50</span>], [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">10</span>]] )-&gt;<span class="pl-en">max</span>( <span class="pl-s">'<span class="pl-s">p</span>'</span> ); <span class="pl-c">// 50</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">30</span>]], [<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">50</span>]]] )-&gt;<span class="pl-en">max</span>( <span class="pl-s">'<span class="pl-s">i/p</span>'</span> ); <span class="pl-c">// 50</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">30</span>]], [<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">50</span>]]] )-&gt;<span class="pl-en">max</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>val</span>[<span class="pl-s">'<span class="pl-s">i</span>'</span>][<span class="pl-s">'<span class="pl-s">p</span>'</span>] ?? <span class="pl-c1">null</span> ) <span class="pl-c">// 50</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">50</span>, <span class="pl-c1">10</span>, <span class="pl-c1">30</span>] )-&gt;<span class="pl-en">max</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>key</span> &gt; <span class="pl-c1">0</span> ? <span class="pl-s1"><span class="pl-c1">$</span>val</span> : <span class="pl-c1">null</span> ) <span class="pl-c">// 30</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#avg">avg()</a> - Returns the average of all integer and float values in the map</li> <li><a href="#count">count()</a> - Returns the total number of elements</li> <li><a href="#min">min()</a> - Returns the minium value of all elements</li> <li><a href="#percentage">percentage()</a> - Returns the percentage of all elements passing the test</li> <li><a href="#sum">sum()</a> - Returns the sum of all values in the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">merge()</h3><a id="user-content-merge" class="anchor" aria-label="Permalink: merge()" href="#merge"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Merges the map with the given elements without returning a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function merge( iterable $elements, bool $recursive = false ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> merge( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>elements</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>recursive</span> = <span class="pl-c1">false</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string,mixed&gt;</strong> <code>$elements</code> List of elements</li> <li>@param <strong>bool</strong> <code>$recursive</code> TRUE to merge nested arrays too, FALSE for first level elements only</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">Elements with the same non-numeric keys will be overwritten, elements with the same numeric keys will be added.</p> <p dir="auto">The method is similar to <a href="#replace">replace()</a> but doesn't replace elements with the same numeric keys. If you want to be sure that all passed elements are added without replacing existing ones, use <a href="#concat">concat()</a> instead.</p> <p dir="auto">The keys are preserved using this method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;merge( ['b', 'c'] ); // ['a', 'b', 'b', 'c'] Map::from( ['a' =&gt; 1, 'b' =&gt; 2] )-&gt;merge( ['b' =&gt; 4, 'c' =&gt; 6] ); // ['a' =&gt; 1, 'b' =&gt; 4, 'c' =&gt; 6] Map::from( ['a' =&gt; 1, 'b' =&gt; 2] )-&gt;merge( ['b' =&gt; 4, 'c' =&gt; 6], true ); // ['a' =&gt; 1, 'b' =&gt; [2, 4], 'c' =&gt; 6]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">merge</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] ); <span class="pl-c">// ['a', 'b', 'b', 'c']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">2</span>] )-&gt;<span class="pl-en">merge</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">4</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-c1">6</span>] ); <span class="pl-c">// ['a' =&gt; 1, 'b' =&gt; 4, 'c' =&gt; 6]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">2</span>] )-&gt;<span class="pl-en">merge</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">4</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-c1">6</span>], <span class="pl-c1">true</span> ); <span class="pl-c">// ['a' =&gt; 1, 'b' =&gt; [2, 4], 'c' =&gt; 6]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#combine">concat()</a> - Adds all elements with new keys</li> <li><a href="#union">union()</a> - Builds a union of the elements and the given elements without returning a new map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">method()</h3><a id="user-content-method" class="anchor" aria-label="Permalink: method()" href="#method"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Registers a custom method or returns the existing one.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public static function method( string $method, \Closure $fcn = null ) : ?\Closure"><pre><span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">function</span> method( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>method</span>, <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>fcn</span> = <span class="pl-c1">null</span> ) : ?<span class="pl-smi">\<span class="pl-smi">Closure</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$method</code> Method name</li> <li>@param <strong>\Closure|null</strong> <code>$fcn</code> Anonymous function or NULL to return the closure if available</li> <li>@return <strong>\Closure|null</strong> Registered anonymous function or NULL if none has been registered</li> </ul> <p dir="auto">The registed method has access to the class properties if called non-static.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::method( 'foo', function( $arg1, $arg2 ) { return array_merge( $this-&gt;elements, [$arg1, $arg2] ); } ); Map::method( 'foo' ); // registered closure Map::method( 'foo2' ); // NULL Map::from( ['bar'] )-&gt;foo( 'foo', 'baz' ); // ['bar', 'foo', 'baz'] Map::foo( 'foo', 'baz' ); // error because `$this-&gt;elements` isn't available"><pre>Map::<span class="pl-en">method</span>( <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>arg1</span>, <span class="pl-s1"><span class="pl-c1">$</span>arg2</span> ) { <span class="pl-k">return</span> <span class="pl-en">array_merge</span>( <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-c1">elements</span>, [<span class="pl-s1"><span class="pl-c1">$</span>arg1</span>, <span class="pl-s1"><span class="pl-c1">$</span>arg2</span>] ); } ); Map::<span class="pl-en">method</span>( <span class="pl-s">'<span class="pl-s">foo</span>'</span> ); <span class="pl-c">// registered closure</span> Map::<span class="pl-en">method</span>( <span class="pl-s">'<span class="pl-s">foo2</span>'</span> ); <span class="pl-c">// NULL</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">foo</span>( <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">baz</span>'</span> ); <span class="pl-c">// ['bar', 'foo', 'baz']</span> Map::<span class="pl-en">foo</span>( <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">baz</span>'</span> ); <span class="pl-c">// error because `$this-&gt;elements` isn't available</span></pre></div> <p dir="auto">Static calls can't access <code>$this-&gt;elements</code> but can operate on the parameter values:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::method( 'bar', function( $arg1, $arg2 ) { return new static( [$arg1, $arg2] ); } ); Map::foo( 'foo', 'baz' ); // ['foo', 'baz']"><pre>Map::<span class="pl-en">method</span>( <span class="pl-s">'<span class="pl-s">bar</span>'</span>, <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>arg1</span>, <span class="pl-s1"><span class="pl-c1">$</span>arg2</span> ) { <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-v">static</span>( [<span class="pl-s1"><span class="pl-c1">$</span>arg1</span>, <span class="pl-s1"><span class="pl-c1">$</span>arg2</span>] ); } ); Map::<span class="pl-en">foo</span>( <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">baz</span>'</span> ); <span class="pl-c">// ['foo', 'baz']</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">min()</h3><a id="user-content-min" class="anchor" aria-label="Permalink: min()" href="#min"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the minimum value of all elements.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function min( $col = null )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> min( <span class="pl-s1"><span class="pl-c1">$</span>col</span> = <span class="pl-c1">null</span> )</pre></div> <ul dir="auto"> <li>@param <strong>Closure|string|null</strong> <code>$col</code> Closure, key in the nested array or object to check for</li> <li>@return <strong>mixed</strong> Minimum value or NULL if there are no elements in the map</li> </ul> <p dir="auto">NULL values are removed before the comparison. If there are no values or all values are NULL, NULL is returned.</p> <p dir="auto">This does also work to map values from multi-dimensional arrays by passing the keys of the arrays separated by the delimiter ("/" by default), e.g. <code>key1/key2/key3</code> to get <code>val</code> from <code>['key1' =&gt; ['key2' =&gt; ['key3' =&gt; 'val']]]</code>. The same applies to public properties of objects or objects implementing <code>__isset()</code> and <code>__get()</code> methods.</p> <p dir="auto">Be careful comparing elements of different types because this can have unpredictable results due to the <a href="https://www.php.net/manual/en/language.operators.comparison.php" rel="nofollow">PHP comparison rules</a></p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [2, 3, 1, 5, 4] )-&gt;min(); // 1 Map::from( ['baz', 'foo', 'bar'] )-&gt;min(); // 'bar' Map::from( [['p' =&gt; 30], ['p' =&gt; 50], ['p' =&gt; 10]] )-&gt;min( 'p' ); // 10 Map::from( [['i' =&gt; ['p' =&gt; 30]], ['i' =&gt; ['p' =&gt; 50]]] )-&gt;min( 'i/p' ); // 30 Map::from( [['i' =&gt; ['p' =&gt; 30]], ['i' =&gt; ['p' =&gt; 50]]] )-&gt;min( fn( $val, $key ) =&gt; $val['i']['p'] ?? null ) // 30 Map::from( [10, 50, 30] )-&gt;min( fn( $val, $key ) =&gt; $key &gt; 0 ? $val : null ) // 30"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">2</span>, <span class="pl-c1">3</span>, <span class="pl-c1">1</span>, <span class="pl-c1">5</span>, <span class="pl-c1">4</span>] )-&gt;<span class="pl-en">min</span>(); <span class="pl-c">// 1</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">baz</span>'</span>, <span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">min</span>(); <span class="pl-c">// 'bar'</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">30</span>], [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">50</span>], [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">10</span>]] )-&gt;<span class="pl-en">min</span>( <span class="pl-s">'<span class="pl-s">p</span>'</span> ); <span class="pl-c">// 10</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">30</span>]], [<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">50</span>]]] )-&gt;<span class="pl-en">min</span>( <span class="pl-s">'<span class="pl-s">i/p</span>'</span> ); <span class="pl-c">// 30</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">30</span>]], [<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">50</span>]]] )-&gt;<span class="pl-en">min</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>val</span>[<span class="pl-s">'<span class="pl-s">i</span>'</span>][<span class="pl-s">'<span class="pl-s">p</span>'</span>] ?? <span class="pl-c1">null</span> ) <span class="pl-c">// 30</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">10</span>, <span class="pl-c1">50</span>, <span class="pl-c1">30</span>] )-&gt;<span class="pl-en">min</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>key</span> &gt; <span class="pl-c1">0</span> ? <span class="pl-s1"><span class="pl-c1">$</span>val</span> : <span class="pl-c1">null</span> ) <span class="pl-c">// 30</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#avg">avg()</a> - Returns the average of all integer and float values in the map</li> <li><a href="#count">count()</a> - Returns the total number of elements</li> <li><a href="#max">max()</a> - Returns the maximum value of all elements</li> <li><a href="#percentage">percentage()</a> - Returns the percentage of all elements passing the test</li> <li><a href="#sum">sum()</a> - Returns the sum of all values in the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">none()</h3><a id="user-content-none" class="anchor" aria-label="Permalink: none()" href="#none"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if none of the elements are part of the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function none( $element, bool $strict = false ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> none( <span class="pl-s1"><span class="pl-c1">$</span>element</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>strict</span> = <span class="pl-c1">false</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>mixed|array</strong> <code>$element</code> Element or elements to search for in the map</li> <li>@param <strong>bool</strong> <code>$strict</code> TRUE to check the type too, using FALSE '1' and 1 will be the same</li> <li>@return <strong>bool</strong> TRUE if none of the elements is part of the map, FALSE if at least one is</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;none( 'x' ); // true Map::from( ['1', '2'] )-&gt;none( 2, true ); // true Map::from( ['a', 'b'] )-&gt;none( 'a' ); // false Map::from( ['a', 'b'] )-&gt;none( ['a', 'b'] ); // false Map::from( ['a', 'b'] )-&gt;none( ['a', 'x'] ); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">none</span>( <span class="pl-s">'<span class="pl-s">x</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">1</span>'</span>, <span class="pl-s">'<span class="pl-s">2</span>'</span>] )-&gt;<span class="pl-en">none</span>( <span class="pl-c1">2</span>, <span class="pl-c1">true</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">none</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">none</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">none</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">x</span>'</span>] ); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#contains">contains()</a> - Tests if an item exists in the map</li> <li><a href="#includes">includes()</a> - Tests if element is included</li> <li><a href="#in">in()</a> - Tests if element is included</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">nth()</h3><a id="user-content-nth" class="anchor" aria-label="Permalink: nth()" href="#nth"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns every nth element from the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function nth( int $step, int $offset = 0 ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> nth( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>step</span>, <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>offset</span> = <span class="pl-c1">0</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$step</code> Step width</li> <li>@param <strong>int</strong> <code>$offset</code> Number of element to start from (0-based)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b', 'c', 'd', 'e', 'f'] )-&gt;nth( 2 ); // ['a', 'c', 'e'] Map::from( ['a', 'b', 'c', 'd', 'e', 'f'] )-&gt;nth( 2, 1 ); // ['b', 'd', 'f']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">d</span>'</span>, <span class="pl-s">'<span class="pl-s">e</span>'</span>, <span class="pl-s">'<span class="pl-s">f</span>'</span>] )-&gt;<span class="pl-en">nth</span>( <span class="pl-c1">2</span> ); <span class="pl-c">// ['a', 'c', 'e']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">d</span>'</span>, <span class="pl-s">'<span class="pl-s">e</span>'</span>, <span class="pl-s">'<span class="pl-s">f</span>'</span>] )-&gt;<span class="pl-en">nth</span>( <span class="pl-c1">2</span>, <span class="pl-c1">1</span> ); <span class="pl-c">// ['b', 'd', 'f']</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">offsetExists()</h3><a id="user-content-offsetexists" class="anchor" aria-label="Permalink: offsetExists()" href="#offsetexists"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Determines if an element exists at an offset.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function offsetExists( $key )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> offsetExists( <span class="pl-s1"><span class="pl-c1">$</span>key</span> )</pre></div> <ul dir="auto"> <li>@param <strong>int|string</strong> <code>$key</code> Key to check for</li> <li>@return <strong>bool</strong> TRUE if key exists, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$map = Map::from( ['a' =&gt; 1, 'b' =&gt; 3, 'c' =&gt; null] ); isset( $map['b'] ); // true isset( $map['c'] ); // false isset( $map['d'] ); // false"><pre><span class="pl-s1"><span class="pl-c1">$</span>map</span> = Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-c1">null</span>] ); <span class="pl-en">isset</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span>[<span class="pl-s">'<span class="pl-s">b</span>'</span>] ); <span class="pl-c">// true</span> <span class="pl-en">isset</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span>[<span class="pl-s">'<span class="pl-s">c</span>'</span>] ); <span class="pl-c">// false</span> <span class="pl-en">isset</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span>[<span class="pl-s">'<span class="pl-s">d</span>'</span>] ); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#offsetget">offsetGet()</a> - Returns an element at a given offset</li> <li><a href="#offsetset">offsetSet()</a> - Sets the element at a given offset</li> <li><a href="#offsetunset">offsetUnset()</a> - Unsets the element at a given offset</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">offsetGet()</h3><a id="user-content-offsetget" class="anchor" aria-label="Permalink: offsetGet()" href="#offsetget"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns an element at a given offset.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function offsetGet( $key )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> offsetGet( <span class="pl-s1"><span class="pl-c1">$</span>key</span> )</pre></div> <ul dir="auto"> <li>@param <strong>int|string</strong> <code>$key</code> Key to return the element for</li> <li>@return <strong>mixed</strong> Value associated to the given key</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$map = Map::from( ['a' =&gt; 1, 'b' =&gt; 3] ); $map['b']; // 3"><pre><span class="pl-s1"><span class="pl-c1">$</span>map</span> = Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">3</span>] ); <span class="pl-s1"><span class="pl-c1">$</span>map</span>[<span class="pl-s">'<span class="pl-s">b</span>'</span>]; <span class="pl-c">// 3</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#offsetexists">offsetExists()</a> - Determines if an element exists at an offset.</li> <li><a href="#offsetset">offsetSet()</a> - Sets the element at a given offset</li> <li><a href="#offsetunset">offsetUnset()</a> - Unsets the element at a given offset</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">offsetSet()</h3><a id="user-content-offsetset" class="anchor" aria-label="Permalink: offsetSet()" href="#offsetset"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sets the element at a given offset.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function offsetSet( $key, $value )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> offsetSet( <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-s1"><span class="pl-c1">$</span>value</span> )</pre></div> <ul dir="auto"> <li>@param <strong>int|string|null</strong> <code>$key</code> Key to set the element for or NULL to append value</li> <li>@param <strong>mixed</strong> <code>$value</code> New value set for the key</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$map = Map::from( ['a' =&gt; 1] ); $map['b'] = 2; // ['a' =&gt; 1, 'b' =&gt; 2] $map[0] = 4; // ['a' =&gt; 1, 'b' =&gt; 2, 0 =&gt; 4]"><pre><span class="pl-s1"><span class="pl-c1">$</span>map</span> = Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>] ); <span class="pl-s1"><span class="pl-c1">$</span>map</span>[<span class="pl-s">'<span class="pl-s">b</span>'</span>] = <span class="pl-c1">2</span>; <span class="pl-c">// ['a' =&gt; 1, 'b' =&gt; 2]</span> <span class="pl-s1"><span class="pl-c1">$</span>map</span>[<span class="pl-c1">0</span>] = <span class="pl-c1">4</span>; <span class="pl-c">// ['a' =&gt; 1, 'b' =&gt; 2, 0 =&gt; 4]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#offsetexists">offsetExists()</a> - Determines if an element exists at an offset.</li> <li><a href="#offsetget">offsetGet()</a> - Returns an element at a given offset</li> <li><a href="#offsetunset">offsetUnset()</a> - Unsets the element at a given offset</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">offsetUnset()</h3><a id="user-content-offsetunset" class="anchor" aria-label="Permalink: offsetUnset()" href="#offsetunset"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Unsets the element at a given offset.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function offsetUnset( $key )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> offsetUnset( <span class="pl-s1"><span class="pl-c1">$</span>key</span> )</pre></div> <ul dir="auto"> <li>@param <strong>int|string</strong> <code>$key</code> Key for unsetting the item</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$map = Map::from( ['a' =&gt; 1] ); unset( $map['a'] ); // []"><pre><span class="pl-s1"><span class="pl-c1">$</span>map</span> = Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>] ); unset( <span class="pl-s1"><span class="pl-c1">$</span>map</span>[<span class="pl-s">'<span class="pl-s">a</span>'</span>] ); <span class="pl-c">// []</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#offsetexists">offsetExists()</a> - Determines if an element exists at an offset.</li> <li><a href="#offsetget">offsetGet()</a> - Returns an element at a given offset</li> <li><a href="#offsetset">offsetSet()</a> - Sets the element at a given offset</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">only()</h3><a id="user-content-only" class="anchor" aria-label="Permalink: only()" href="#only"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns a new map with only those elements specified by the given keys.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function only( $keys ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> only( <span class="pl-s1"><span class="pl-c1">$</span>keys</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;mixed&gt;|array&lt;mixed&gt;|string|int</strong> <code>$keys</code> Keys of the elements that should be returned</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with only the elements specified by the keys</li> </ul> <p dir="auto">The keys are preserved using this method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 0 =&gt; 'b'] )-&gt;only( 'a' ); // ['a' =&gt; 1] Map::from( ['a' =&gt; 1, 0 =&gt; 'b', 1 =&gt; 'c'] )-&gt;only( [0, 1] ); // [0 =&gt; 'b', 1 =&gt; 'c']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">only</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// ['a' =&gt; 1]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">c</span>'</span>] )-&gt;<span class="pl-en">only</span>( [<span class="pl-c1">0</span>, <span class="pl-c1">1</span>] ); <span class="pl-c">// [0 =&gt; 'b', 1 =&gt; 'c']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#clear">clear()</a> - Removes all elements from the current map</li> <li><a href="#except">except()</a> - Returns a new map without the passed element keys</li> <li><a href="#reject">reject()</a> - Removes all matched elements</li> <li><a href="#remove">remove()</a> - Removes an element by key</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">order()</h3><a id="user-content-order" class="anchor" aria-label="Permalink: order()" href="#order"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns a new map with elements ordered by the passed keys.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function order( iterable $keys ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> order( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>keys</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;mixed&gt;</strong> <code>$keys</code> Keys of the elements in the required order</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with elements ordered by the passed keys</li> </ul> <p dir="auto">The keys are preserved using this method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 1 =&gt; 'c', 0 =&gt; 'b'] )-&gt;order( [0, 1, 'a'] ); // [0 =&gt; 'b', 1 =&gt; 'c', 'a' =&gt; 1] Map::from( ['a' =&gt; 1, 1 =&gt; 'c', 0 =&gt; 'b'] )-&gt;order( [0, 1, 2] ); // [0 =&gt; 'b', 1 =&gt; 'c', 2 =&gt; null] Map::from( ['a' =&gt; 1, 1 =&gt; 'c', 0 =&gt; 'b'] )-&gt;order( [0, 1] ); // [0 =&gt; 'b', 1 =&gt; 'c']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">order</span>( [<span class="pl-c1">0</span>, <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span>] ); <span class="pl-c">// [0 =&gt; 'b', 1 =&gt; 'c', 'a' =&gt; 1]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">order</span>( [<span class="pl-c1">0</span>, <span class="pl-c1">1</span>, <span class="pl-c1">2</span>] ); <span class="pl-c">// [0 =&gt; 'b', 1 =&gt; 'c', 2 =&gt; null]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">order</span>( [<span class="pl-c1">0</span>, <span class="pl-c1">1</span>] ); <span class="pl-c">// [0 =&gt; 'b', 1 =&gt; 'c']</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">pad()</h3><a id="user-content-pad" class="anchor" aria-label="Permalink: pad()" href="#pad"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Fill up to the specified length with the given value</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function pad( int $size, $value = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> pad( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>size</span>, <span class="pl-s1"><span class="pl-c1">$</span>value</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$size</code> Total number of elements that should be in the list</li> <li>@param <strong>mixed</strong> <code>$value</code> Value to fill up with if the map length is smaller than the given size</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">In case the given number is smaller than the number of element that are already in the list, the map is unchanged. If the size is positive, the new elements are padded on the right, if it's negative then the elements are padded on the left.</p> <p dir="auto">Associative keys are preserved, numerical keys are replaced and numerical keys are used for the new elements.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [1, 2, 3] )-&gt;pad( 5 ); // [1, 2, 3, null, null] Map::from( [1, 2, 3] )-&gt;pad( -5 ); // [null, null, 1, 2, 3] Map::from( [1, 2, 3] )-&gt;pad( 5, '0' ); // [1, 2, 3, '0', '0'] Map::from( [1, 2, 3] )-&gt;pad( 2 ); // [1, 2, 3] Map::from( [10 =&gt; 1, 20 =&gt; 2] )-&gt;pad( 3 ); // [0 =&gt; 1, 1 =&gt; 2, 2 =&gt; null] Map::from( ['a' =&gt; 1, 'b' =&gt; 2] )-&gt;pad( 3, 3 ); // ['a' =&gt; 1, 'b' =&gt; 2, 0 =&gt; 3]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>] )-&gt;<span class="pl-en">pad</span>( <span class="pl-c1">5</span> ); <span class="pl-c">// [1, 2, 3, null, null]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>] )-&gt;<span class="pl-en">pad</span>( -<span class="pl-c1">5</span> ); <span class="pl-c">// [null, null, 1, 2, 3]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>] )-&gt;<span class="pl-en">pad</span>( <span class="pl-c1">5</span>, <span class="pl-s">'<span class="pl-s">0</span>'</span> ); <span class="pl-c">// [1, 2, 3, '0', '0']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>] )-&gt;<span class="pl-en">pad</span>( <span class="pl-c1">2</span> ); <span class="pl-c">// [1, 2, 3]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">10</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-c1">20</span> =&gt; <span class="pl-c1">2</span>] )-&gt;<span class="pl-en">pad</span>( <span class="pl-c1">3</span> ); <span class="pl-c">// [0 =&gt; 1, 1 =&gt; 2, 2 =&gt; null]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">2</span>] )-&gt;<span class="pl-en">pad</span>( <span class="pl-c1">3</span>, <span class="pl-c1">3</span> ); <span class="pl-c">// ['a' =&gt; 1, 'b' =&gt; 2, 0 =&gt; 3]</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">partition()</h3><a id="user-content-partition" class="anchor" aria-label="Permalink: partition()" href="#partition"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Breaks the list of elements into the given number of groups.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function partition( $num ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> partition( <span class="pl-s1"><span class="pl-c1">$</span>num</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|int</strong> <code>$number</code> Function with (value, index) as arguments returning the bucket key or number of groups</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The keys of the original map are preserved in the returned map.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [1, 2, 3, 4, 5] )-&gt;partition( 3 ); // [[0 =&gt; 1, 1 =&gt; 2], [2 =&gt; 3, 3 =&gt; 4], [4 =&gt; 5]] Map::from( [1, 2, 3, 4, 5] )-&gt;partition( function( $val, $idx ) { return $idx % 3; } ); // [0 =&gt; [0 =&gt; 1, 3 =&gt; 4], 1 =&gt; [1 =&gt; 2, 4 =&gt; 5], 2 =&gt; [2 =&gt; 3]]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>, <span class="pl-c1">4</span>, <span class="pl-c1">5</span>] )-&gt;<span class="pl-en">partition</span>( <span class="pl-c1">3</span> ); <span class="pl-c">// [[0 =&gt; 1, 1 =&gt; 2], [2 =&gt; 3, 3 =&gt; 4], [4 =&gt; 5]]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>, <span class="pl-c1">4</span>, <span class="pl-c1">5</span>] )-&gt;<span class="pl-en">partition</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>idx</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>idx</span> % <span class="pl-c1">3</span>; } ); <span class="pl-c">// [0 =&gt; [0 =&gt; 1, 3 =&gt; 4], 1 =&gt; [1 =&gt; 2, 4 =&gt; 5], 2 =&gt; [2 =&gt; 3]]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#chunk">chunk()</a> - Chunks the map into arrays with the given number of elements</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">percentage()</h3><a id="user-content-percentage" class="anchor" aria-label="Permalink: percentage()" href="#percentage"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the percentage of all elements passing the test in the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function percentage( \Closure $fcn, int $precision = 2 ) : float"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> percentage( <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>fcn</span>, <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>precision</span> = <span class="pl-c1">2</span> ) : <span class="pl-smi">float</span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure</strong> <code>$fcn</code> Closure to filter the values in the nested array or object to compute the percentage</li> <li>@param <strong>int</strong> <code>$precision</code> Number of decimal digits use by the result value</li> <li>@return <strong>float</strong> Percentage of all elements passing the test in the map</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [30, 50, 10] )-&gt;percentage( fn( $val, $key ) =&gt; $val &lt; 50 ); // 66.67 Map::from( [] )-&gt;percentage( fn( $val, $key ) =&gt; true ); // 0.0 Map::from( [30, 50, 10] )-&gt;percentage( fn( $val, $key ) =&gt; $val &gt; 100 ); // 0.0 Map::from( [30, 50, 10] )-&gt;percentage( fn( $val, $key ) =&gt; $val &gt; 30, 3 ); // 33.333 Map::from( [30, 50, 10] )-&gt;percentage( fn( $val, $key ) =&gt; $val &gt; 30, 0 ); // 33.0 Map::from( [30, 50, 10] )-&gt;percentage( fn( $val, $key ) =&gt; $val &lt; 50, -1 ); // 70.0"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">30</span>, <span class="pl-c1">50</span>, <span class="pl-c1">10</span>] )-&gt;<span class="pl-en">percentage</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>val</span> &lt; <span class="pl-c1">50</span> ); <span class="pl-c">// 66.67</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">percentage</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-c1">true</span> ); <span class="pl-c">// 0.0</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">30</span>, <span class="pl-c1">50</span>, <span class="pl-c1">10</span>] )-&gt;<span class="pl-en">percentage</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>val</span> &gt; <span class="pl-c1">100</span> ); <span class="pl-c">// 0.0</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">30</span>, <span class="pl-c1">50</span>, <span class="pl-c1">10</span>] )-&gt;<span class="pl-en">percentage</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>val</span> &gt; <span class="pl-c1">30</span>, <span class="pl-c1">3</span> ); <span class="pl-c">// 33.333</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">30</span>, <span class="pl-c1">50</span>, <span class="pl-c1">10</span>] )-&gt;<span class="pl-en">percentage</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>val</span> &gt; <span class="pl-c1">30</span>, <span class="pl-c1">0</span> ); <span class="pl-c">// 33.0</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">30</span>, <span class="pl-c1">50</span>, <span class="pl-c1">10</span>] )-&gt;<span class="pl-en">percentage</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>val</span> &lt; <span class="pl-c1">50</span>, -<span class="pl-c1">1</span> ); <span class="pl-c">// 70.0</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#avg">avg()</a> - Returns the average of all integer and float values in the map</li> <li><a href="#count">count()</a> - Returns the total number of elements</li> <li><a href="#max">max()</a> - Returns the maximum value of all elements</li> <li><a href="#min">min()</a> - Returns the minium value of all elements</li> <li><a href="#sum">sum()</a> - Returns the sum of all values in the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">pipe()</h3><a id="user-content-pipe" class="anchor" aria-label="Permalink: pipe()" href="#pipe"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Passes the map to the given callback and return the result.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function pipe( \Closure $callback )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> pipe( <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> )</pre></div> <ul dir="auto"> <li>@param <strong>\Closure</strong> <code>$callback</code> Function with map as parameter which returns arbitrary result</li> <li>@return <strong>mixed</strong> Result returned by the callback</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;pipe( function( $map ) { return strrev( $map-&gt;join( '-' ) ); } ); // 'b-a'"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">pipe</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span> ) { <span class="pl-k">return</span> <span class="pl-en">strrev</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">join</span>( <span class="pl-s">'<span class="pl-s">-</span>'</span> ) ); } ); <span class="pl-c">// 'b-a'</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">pluck()</h3><a id="user-content-pluck" class="anchor" aria-label="Permalink: pluck()" href="#pluck"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the values of a single column/property from an array of arrays or list of elements in a new map (alias).</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function pluck( string $valuecol = null, string $indexcol = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> pluck( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>valuecol</span> = <span class="pl-c1">null</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>indexcol</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string|null</strong> <code>$valuecol</code> Name or path of the value property</li> <li>@param <strong>string|null</strong> <code>$indexcol</code> Name or path of the index property</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with mapped entries</li> </ul> <p dir="auto">This method is an alias for <a href="#col">col()</a>. For performance reasons, <code>col()</code> should be preferred because it uses one method call less than <code>pluck()</code>.</p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#col">col()</a> - Returns the values of a single column/property from an array of arrays or list of elements in a new map</li> <li><a href="#map">map()</a> - Applies a callback to each element and returns the results</li> <li><a href="#pluck">pluck()</a> - Creates a key/value mapping (alias)</li> <li><a href="#pluck">rekey()</a> - Changes the keys according to the passed function</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">pop()</h3><a id="user-content-pop" class="anchor" aria-label="Permalink: pop()" href="#pop"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns and removes the last element from the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function pop()"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> pop()</pre></div> <ul dir="auto"> <li>@return <strong>mixed</strong> Last element of the map or null if empty</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;pop(); // 'b', map contains ['a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">pop</span>(); <span class="pl-c">// 'b', map contains ['a']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#push">push()</a> - Adds an element onto the end of the map without returning a new map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">pos</h3><a id="user-content-pos" class="anchor" aria-label="Permalink: pos" href="#pos"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the numerical index of the value.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function pos( $value ) : ?int"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> pos( <span class="pl-s1"><span class="pl-c1">$</span>value</span> ) : ?<span class="pl-smi">int</span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|mixed</strong> <code>$value</code> Value to search for or function with (item, key) parameters return TRUE if value is found</li> <li>@return <strong>int|null</strong> Position of the found value (zero based) or NULL if not found</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [4 =&gt; 'a', 8 =&gt; 'b'] )-&gt;pos( 'b' ); // 1 Map::from( [4 =&gt; 'a', 8 =&gt; 'b'] )-&gt;pos( function( $item, $key ) { return $item === 'b'; } ); // 1"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">4</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">8</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">pos</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// 1</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">4</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">8</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">pos</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>item</span> === <span class="pl-s">'<span class="pl-s">b</span>'</span>; } ); <span class="pl-c">// 1</span></pre></div> <p dir="auto">Both examples will return "1" because the value "b" is at the second position and the returned index is zero based so the first item has the index "0".</p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#at">at()</a> - Returns the value at the given position</li> <li><a href="#index">index()</a> - Returns the numerical index of the given key</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">prefix</h3><a id="user-content-prefix" class="anchor" aria-label="Permalink: prefix" href="#prefix"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Adds a prefix in front of each map entry.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function prefix( $prefix, int $depth = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> prefix( <span class="pl-s1"><span class="pl-c1">$</span>prefix</span>, <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>depth</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|string</strong> <code>$prefix</code> Function with map as parameter which returns arbitrary result</li> <li>@param <strong>int|null</strong> <code>$depth</code> Maximum depth to dive into multi-dimensional arrays starting from "1"</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">By default, nested arrays are walked recusively so all entries at all levels are prefixed. The keys of the original map are preserved in the returned map.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;prefix( '1-' ); // ['1-a', '1-b'] Map::from( ['a', ['b']] )-&gt;prefix( '1-' ); // ['1-a', ['1-b']] Map::from( ['a', ['b']] )-&gt;prefix( '1-', 1 ); // ['1-a', ['b']] Map::from( ['a', 'b'] )-&gt;prefix( function( $item, $key ) { return ( ord( $item ) + ord( $key ) ) . '-'; } ); // ['145-a', '147-b']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">prefix</span>( <span class="pl-s">'<span class="pl-s">1-</span>'</span> ); <span class="pl-c">// ['1-a', '1-b']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, [<span class="pl-s">'<span class="pl-s">b</span>'</span>]] )-&gt;<span class="pl-en">prefix</span>( <span class="pl-s">'<span class="pl-s">1-</span>'</span> ); <span class="pl-c">// ['1-a', ['1-b']]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, [<span class="pl-s">'<span class="pl-s">b</span>'</span>]] )-&gt;<span class="pl-en">prefix</span>( <span class="pl-s">'<span class="pl-s">1-</span>'</span>, <span class="pl-c1">1</span> ); <span class="pl-c">// ['1-a', ['b']]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">prefix</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> ( <span class="pl-en">ord</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span> ) + <span class="pl-en">ord</span>( <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) ) . <span class="pl-s">'<span class="pl-s">-</span>'</span>; } ); <span class="pl-c">// ['145-a', '147-b']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#suffix">suffix()</a> - Adds a suffix at the end of each map entry</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">prepend()</h3><a id="user-content-prepend" class="anchor" aria-label="Permalink: prepend()" href="#prepend"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Pushes an element onto the beginning of the map without returning a new map (alias).</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function prepend( $value, $key = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> prepend( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>mixed</strong> <code>$value</code> Item to add at the beginning</li> <li>@param <strong>int|string|null</strong> <code>$key</code> Key for the item or NULL to reindex all numerical keys</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">This method is an alias for the <a href="#unshift">unshift()</a> method. For performance reasons, <code>unshift()</code> should be preferred because it uses one method call less than <code>prepend()</code>.</p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#unshift">unshift()</a> - Underlying method with same parameters and return value but better performance</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">pull()</h3><a id="user-content-pull" class="anchor" aria-label="Permalink: pull()" href="#pull"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns and removes an element from the map by its key.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function pull( $key, $default = null )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> pull( <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-s1"><span class="pl-c1">$</span>default</span> = <span class="pl-c1">null</span> )</pre></div> <ul dir="auto"> <li>@param <strong>int|string</strong> <code>$key</code> Key to retrieve the value for</li> <li>@param <strong>mixed</strong> <code>$default</code> Default value if key isn't available</li> <li>@return <strong>mixed</strong> Value from map or default value</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b', 'c'] )-&gt;pull( 1 ); // 'b', map contains ['a', 'c'] Map::from( ['a', 'b', 'c'] )-&gt;pull( 'x', 'none' ); // 'none', map contains ['a', 'b', 'c']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] )-&gt;<span class="pl-en">pull</span>( <span class="pl-c1">1</span> ); <span class="pl-c">// 'b', map contains ['a', 'c']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] )-&gt;<span class="pl-en">pull</span>( <span class="pl-s">'<span class="pl-s">x</span>'</span>, <span class="pl-s">'<span class="pl-s">none</span>'</span> ); <span class="pl-c">// 'none', map contains ['a', 'b', 'c']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#get">get()</a> - Returns an element from the map by key</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">push()</h3><a id="user-content-push" class="anchor" aria-label="Permalink: push()" href="#push"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Adds an element onto the end of the map without returning a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function push( $value ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> push( <span class="pl-s1"><span class="pl-c1">$</span>value</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>mixed</strong> <code>$value</code> Value to add to the end</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;push( 'aa' ); // ['a', 'b', 'aa']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">push</span>( <span class="pl-s">'<span class="pl-s">aa</span>'</span> ); <span class="pl-c">// ['a', 'b', 'aa']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#pop">pop()</a> - Returns and removes the last element from the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">put()</h3><a id="user-content-put" class="anchor" aria-label="Permalink: put()" href="#put"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sets the given key and value in the map without returning a new map (alias).</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function put( $key, $value ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> put( <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-s1"><span class="pl-c1">$</span>value</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int|string</strong> <code>$key</code> Key to set the new value for</li> <li>@param <strong>mixed</strong> <code>$value</code> New element that should be set</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">This method is an alias for <a href="#set">set()</a>. For performance reasons, <code>set()</code> should be preferred because it uses one method call less than <code>put()</code>.</p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#set">set()</a> - Underlying method with same parameters and return value but better performance</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">random()</h3><a id="user-content-random" class="anchor" aria-label="Permalink: random()" href="#random"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns one or more random element from the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function random( int $max = 1 ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> random( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>max</span> = <span class="pl-c1">1</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$max</code> Maximum number of elements that should be returned</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with key/element pairs from original map in random order</li> <li>@throws <strong>\InvalidArgumentException</strong> If requested number of elements is less than 1</li> </ul> <p dir="auto">The less elements are in the map, the less random the order will be, especially if the maximum number of values is high or close to the number of elements.</p> <p dir="auto">The keys of the original map are preserved in the returned map.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [2, 4, 8, 16] )-&gt;random(); // [2 =&gt; 8] or any other key/value pair Map::from( [2, 4, 8, 16] )-&gt;random( 2 ); // [3 =&gt; 16, 0 =&gt; 2] or any other key/value pair Map::from( [2, 4, 8, 16] )-&gt;random( 5 ); // [0 =&gt; 2, 1 =&gt; 4, 2 =&gt; 8, 3 =&gt; 16] in random order"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">2</span>, <span class="pl-c1">4</span>, <span class="pl-c1">8</span>, <span class="pl-c1">16</span>] )-&gt;<span class="pl-en">random</span>(); <span class="pl-c">// [2 =&gt; 8] or any other key/value pair</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">2</span>, <span class="pl-c1">4</span>, <span class="pl-c1">8</span>, <span class="pl-c1">16</span>] )-&gt;<span class="pl-en">random</span>( <span class="pl-c1">2</span> ); <span class="pl-c">// [3 =&gt; 16, 0 =&gt; 2] or any other key/value pair</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">2</span>, <span class="pl-c1">4</span>, <span class="pl-c1">8</span>, <span class="pl-c1">16</span>] )-&gt;<span class="pl-en">random</span>( <span class="pl-c1">5</span> ); <span class="pl-c">// [0 =&gt; 2, 1 =&gt; 4, 2 =&gt; 8, 3 =&gt; 16] in random order</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">reduce()</h3><a id="user-content-reduce" class="anchor" aria-label="Permalink: reduce()" href="#reduce"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Iteratively reduces the array to a single value using a callback function.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function reduce( callable $callback, $initial = null )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> reduce( <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span>, <span class="pl-s1"><span class="pl-c1">$</span>initial</span> = <span class="pl-c1">null</span> )</pre></div> <ul dir="auto"> <li>@param <strong>callable</strong> <code>$callback</code> Function with (result, value) parameters and returns result</li> <li>@param <strong>mixed</strong> <code>$initial</code> Initial value when computing the result</li> <li>@return <strong>mixed</strong> Value computed by the callback function</li> </ul> <p dir="auto">Afterwards, the map will be empty.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [2, 8] )-&gt;reduce( function( $result, $value ) { return $result += $value; }, 10 ); // 20 because 10 + 2 + 8 and map equals []"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">2</span>, <span class="pl-c1">8</span>] )-&gt;<span class="pl-en">reduce</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>result</span>, <span class="pl-s1"><span class="pl-c1">$</span>value</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>result</span> += <span class="pl-s1"><span class="pl-c1">$</span>value</span>; }, <span class="pl-c1">10</span> ); <span class="pl-c">// 20 because 10 + 2 + 8 and map equals []</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">reject()</h3><a id="user-content-reject" class="anchor" aria-label="Permalink: reject()" href="#reject"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Removes all matched elements and returns a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function reject( $callback = true ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> reject( <span class="pl-s1"><span class="pl-c1">$</span>callback</span> = <span class="pl-c1">true</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>Closure|mixed</strong> <code>$callback</code> Function with (item) parameter which returns TRUE/FALSE or value to compare with</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">This method is the inverse of the <a href="#filter">filter()</a> and should return TRUE if the item should be removed from the returned map.</p> <p dir="auto">If no callback is passed, all values which are NOT empty, null or false will be removed. The keys of the original map are preserved in the returned map.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [2 =&gt; 'a', 6 =&gt; 'b', 13 =&gt; 'm', 30 =&gt; 'z'] )-&gt;reject( function( $value, $key ) { return $value &lt; 'm'; } ); // [13 =&gt; 'm', 30 =&gt; 'z'] Map::from( [2 =&gt; 'a', 13 =&gt; 'm', 30 =&gt; 'z'] )-&gt;reject( 'm' ); // [2 =&gt; 'a', 30 =&gt; 'z'] Map::from( [2 =&gt; 'a', 6 =&gt; null, 13 =&gt; 'm'] )-&gt;reject(); // [6 =&gt; null]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">6</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">13</span> =&gt; <span class="pl-s">'<span class="pl-s">m</span>'</span>, <span class="pl-c1">30</span> =&gt; <span class="pl-s">'<span class="pl-s">z</span>'</span>] )-&gt;<span class="pl-en">reject</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> &lt; <span class="pl-s">'<span class="pl-s">m</span>'</span>; } ); <span class="pl-c">// [13 =&gt; 'm', 30 =&gt; 'z']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">13</span> =&gt; <span class="pl-s">'<span class="pl-s">m</span>'</span>, <span class="pl-c1">30</span> =&gt; <span class="pl-s">'<span class="pl-s">z</span>'</span>] )-&gt;<span class="pl-en">reject</span>( <span class="pl-s">'<span class="pl-s">m</span>'</span> ); <span class="pl-c">// [2 =&gt; 'a', 30 =&gt; 'z']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">6</span> =&gt; <span class="pl-c1">null</span>, <span class="pl-c1">13</span> =&gt; <span class="pl-s">'<span class="pl-s">m</span>'</span>] )-&gt;<span class="pl-en">reject</span>(); <span class="pl-c">// [6 =&gt; null]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#clear">clear()</a> - Removes all elements from the current map</li> <li><a href="#duplicates">duplicates()</a> - Returns the duplicate values from the map</li> <li><a href="#except">except()</a> - Returns a new map without the passed element keys</li> <li><a href="#only">only()</a> - Returns only those elements specified by the keys</li> <li><a href="#remove">remove()</a> - Removes an element by key</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">rekey()</h3><a id="user-content-rekey" class="anchor" aria-label="Permalink: rekey()" href="#rekey"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Changes the keys according to the passed function.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function rekey( callable $callback ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> rekey( <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>callable</strong> <code>$callback</code> Function with (value, key) parameters and returns new key</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with new keys and original values</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 2, 'b' =&gt; 4] )-&gt;rekey( function( $value, $key ) { return 'key-' . $key; } ); // ['key-a' =&gt; 2, 'key-b' =&gt; 4]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">4</span>] )-&gt;<span class="pl-en">rekey</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s">'<span class="pl-s">key-</span>'</span> . <span class="pl-s1"><span class="pl-c1">$</span>key</span>; } ); <span class="pl-c">// ['key-a' =&gt; 2, 'key-b' =&gt; 4]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#map">map()</a> - Maps new values to the existing keys using the passed function and returns a new map for the result</li> <li><a href="#transform">transform()</a> - Creates new key/value pairs using the passed function and returns a new map for the result</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">remove()</h3><a id="user-content-remove" class="anchor" aria-label="Permalink: remove()" href="#remove"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Removes one or more elements from the map by its keys without returning a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function remove( $keys ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> remove( <span class="pl-s1"><span class="pl-c1">$</span>keys</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string&gt;|array&lt;int|string&gt;|string|int</strong> <code>$keys</code> List of keys</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 2 =&gt; 'b'] )-&gt;remove( 'a' ); // [2 =&gt; 'b'] Map::from( ['a' =&gt; 1, 2 =&gt; 'b'] )-&gt;remove( [2, 'a'] ); // []"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">remove</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// [2 =&gt; 'b']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">remove</span>( [<span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span>] ); <span class="pl-c">// []</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#clear">clear()</a> - Removes all elements from the current map</li> <li><a href="#except">except()</a> - Returns a new map without the passed element keys</li> <li><a href="#only">only()</a> - Returns only those elements specified by the keys</li> <li><a href="#reject">reject()</a> - Removes all matched elements</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">replace()</h3><a id="user-content-replace" class="anchor" aria-label="Permalink: replace()" href="#replace"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Replaces elements in the map with the given elements without returning a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function replace( iterable $elements, bool $recursive = true ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> replace( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>elements</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>recursive</span> = <span class="pl-c1">true</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string,mixed&gt;</strong> <code>$elements</code> List of elements</li> <li>@param <strong>bool</strong> <code>$recursive</code> TRUE to replace recursively (default), FALSE to replace elements only</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The method is similar to <a href="#merge">merge()</a> but also replaces elements with numeric keys. These would be added by <code>merge()</code> with a new numeric key.</p> <p dir="auto">The keys are preserved in the returned map.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 2 =&gt; 'b'] )-&gt;replace( ['a' =&gt; 2] ); // ['a' =&gt; 2, 2 =&gt; 'b'] Map::from( ['a' =&gt; 1, 'b' =&gt; ['c' =&gt; 3, 'd' =&gt; 4]] )-&gt;replace( ['b' =&gt; ['c' =&gt; 9]] ); // ['a' =&gt; 1, 'b' =&gt; ['c' =&gt; 9, 'd' =&gt; 4]]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">replace</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">2</span>] ); <span class="pl-c">// ['a' =&gt; 2, 2 =&gt; 'b']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">d</span>'</span> =&gt; <span class="pl-c1">4</span>]] )-&gt;<span class="pl-en">replace</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-c1">9</span>]] ); <span class="pl-c">// ['a' =&gt; 1, 'b' =&gt; ['c' =&gt; 9, 'd' =&gt; 4]]</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">reverse()</h3><a id="user-content-reverse" class="anchor" aria-label="Permalink: reverse()" href="#reverse"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Reverses the element order without returning a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function reverse() : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> reverse() : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The keys are preserved using this method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;reverse(); // ['b', 'a'] Map::from( ['name' =&gt; 'test', 'last' =&gt; 'user'] )-&gt;reverse(); // ['last' =&gt; 'user', 'name' =&gt; 'test']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">reverse</span>(); <span class="pl-c">// ['b', 'a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">test</span>'</span>, <span class="pl-s">'<span class="pl-s">last</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">user</span>'</span>] )-&gt;<span class="pl-en">reverse</span>(); <span class="pl-c">// ['last' =&gt; 'user', 'name' =&gt; 'test']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#reversed">reversed()</a> - Reverses the element order in a copy of the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">reversed()</h3><a id="user-content-reversed" class="anchor" aria-label="Permalink: reversed()" href="#reversed"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Reverses the element order in a copy of the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function reversed() : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> reversed() : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with a reversed copy of the elements</li> </ul> <p dir="auto">The keys are preserved using this method and a new map is created before reversing the elements. Thus, <a href="#reverse">reverse()</a> should be preferred for performance reasons if possible.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;reversed(); // ['b', 'a'] Map::from( ['name' =&gt; 'test', 'last' =&gt; 'user'] )-&gt;reversed(); // ['last' =&gt; 'user', 'name' =&gt; 'test']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">reversed</span>(); <span class="pl-c">// ['b', 'a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">test</span>'</span>, <span class="pl-s">'<span class="pl-s">last</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">user</span>'</span>] )-&gt;<span class="pl-en">reversed</span>(); <span class="pl-c">// ['last' =&gt; 'user', 'name' =&gt; 'test']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#reverse">reverse()</a> - Reverses the element order without returning a new map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">rsort()</h3><a id="user-content-rsort" class="anchor" aria-label="Permalink: rsort()" href="#rsort"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts all elements in reverse order without maintaining the key association.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function rsort( int $options = SORT_REGULAR ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> rsort( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">SORT_REGULAR</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Sort options for <code>rsort()</code></li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The parameter modifies how the values are compared. Possible parameter values are:</p> <ul dir="auto"> <li>SORT_REGULAR : compare elements normally (don't change types)</li> <li>SORT_NUMERIC : compare elements numerically</li> <li>SORT_STRING : compare elements as strings</li> <li>SORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by <code>setlocale()</code></li> <li>SORT_NATURAL : compare elements as strings using "natural ordering" like <code>natsort()</code></li> <li>SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively</li> </ul> <p dir="auto">The keys are NOT preserved and elements get a new index. No new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 'b' =&gt; 0] )-&gt;rsort(); // [0 =&gt; 1, 1 =&gt; 0] Map::from( [0 =&gt; 'b', 1 =&gt; 'a'] )-&gt;rsort(); // [0 =&gt; 'b', 1 =&gt; 'a'] Map::from( [0 =&gt; 'C', 1 =&gt; 'b'] )-&gt;rsort(); // [0 =&gt; 'b', 1 =&gt; 'C'] Map::from( [0 =&gt; 'C', 1 =&gt; 'b'] )-&gt;rsort( SORT_STRING|SORT_FLAG_CASE ); // [0 =&gt; 'C', 1 =&gt; 'b'] because 'C' -&gt; 'c' and 'c' &gt; 'b'"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>] )-&gt;<span class="pl-en">rsort</span>(); <span class="pl-c">// [0 =&gt; 1, 1 =&gt; 0]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">rsort</span>(); <span class="pl-c">// [0 =&gt; 'b', 1 =&gt; 'a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">C</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">rsort</span>(); <span class="pl-c">// [0 =&gt; 'b', 1 =&gt; 'C']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">C</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">rsort</span>( <span class="pl-c1">SORT_STRING</span>|<span class="pl-c1">SORT_FLAG_CASE</span> ); <span class="pl-c">// [0 =&gt; 'C', 1 =&gt; 'b'] because 'C' -&gt; 'c' and 'c' &gt; 'b'</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#rsorted">rsorted()</a> - Sorts a copy of all elements in reverse order without maintaining the key association</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">rsorted()</h3><a id="user-content-rsorted" class="anchor" aria-label="Permalink: rsorted()" href="#rsorted"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts a copy of all elements in reverse order without maintaining the key association.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function rsorted( int $options = SORT_REGULAR ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> rsorted( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">SORT_REGULAR</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Sort options for <code>rsort()</code></li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The parameter modifies how the values are compared. Possible parameter values are:</p> <ul dir="auto"> <li>SORT_REGULAR : compare elements normally (don't change types)</li> <li>SORT_NUMERIC : compare elements numerically</li> <li>SORT_STRING : compare elements as strings</li> <li>SORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by <code>setlocale()</code></li> <li>SORT_NATURAL : compare elements as strings using "natural ordering" like <code>natsort()</code></li> <li>SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively</li> </ul> <p dir="auto">The keys are NOT preserved, elements get a new index and a new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 'b' =&gt; 0] )-&gt;rsorted(); // [0 =&gt; 1, 1 =&gt; 0] Map::from( [0 =&gt; 'b', 1 =&gt; 'a'] )-&gt;rsorted(); // [0 =&gt; 'b', 1 =&gt; 'a'] Map::from( [0 =&gt; 'C', 1 =&gt; 'b'] )-&gt;rsorted(); // [0 =&gt; 'b', 1 =&gt; 'C'] Map::from( [0 =&gt; 'C', 1 =&gt; 'b'] )-&gt;rsorted( SORT_STRING|SORT_FLAG_CASE ); // [0 =&gt; 'C', 1 =&gt; 'b'] because 'C' -&gt; 'c' and 'c' &gt; 'b'"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>] )-&gt;<span class="pl-en">rsorted</span>(); <span class="pl-c">// [0 =&gt; 1, 1 =&gt; 0]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">rsorted</span>(); <span class="pl-c">// [0 =&gt; 'b', 1 =&gt; 'a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">C</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">rsorted</span>(); <span class="pl-c">// [0 =&gt; 'b', 1 =&gt; 'C']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">C</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">rsorted</span>( <span class="pl-c1">SORT_STRING</span>|<span class="pl-c1">SORT_FLAG_CASE</span> ); <span class="pl-c">// [0 =&gt; 'C', 1 =&gt; 'b'] because 'C' -&gt; 'c' and 'c' &gt; 'b'</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#rsort">rsort()</a> - Sorts all elements in reverse order without maintaining the key association</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">rtrim()</h3><a id="user-content-rtrim" class="anchor" aria-label="Permalink: rtrim()" href="#rtrim"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Removes the passed characters from the right of all strings.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function rtrim( string $chars = &quot; \n\r\t\v\x00&quot; ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> rtrim( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>chars</span> = <span class="pl-s">"<span class="pl-s"> </span>\n\r\t\v\x00"</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$chars</code> List of characters to trim</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [&quot; abc\n&quot;, &quot;\tcde\r\n&quot;] )-&gt;rtrim(); // [&quot; abc&quot;, &quot;\tcde&quot;] Map::from( [&quot;a b c&quot;, &quot;cbxa&quot;] )-&gt;rtrim( 'abc' ); // [&quot;a b &quot;, &quot;cbx&quot;]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">"<span class="pl-s"> abc</span>\n"</span>, <span class="pl-s">"\t<span class="pl-s">cde</span>\r\n"</span>] )-&gt;<span class="pl-en">rtrim</span>(); <span class="pl-c">// [" abc", "\tcde"]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">"<span class="pl-s">a b c</span>"</span>, <span class="pl-s">"<span class="pl-s">cbxa</span>"</span>] )-&gt;<span class="pl-en">rtrim</span>( <span class="pl-s">'<span class="pl-s">abc</span>'</span> ); <span class="pl-c">// ["a b ", "cbx"]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#ltrim">ltrim()</a> - Removes the passed characters from the left of all strings</li> <li><a href="#trim">trim()</a> - Removes the passed characters from the left/right of all strings</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">search()</h3><a id="user-content-search" class="anchor" aria-label="Permalink: search()" href="#search"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Searches the map for a given value and return the corresponding key if successful.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function search( $value, $strict = true )"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> search( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>strict</span> = <span class="pl-c1">true</span> )</pre></div> <ul dir="auto"> <li>@param <strong>mixed</strong> <code>$value</code> Item to search for</li> <li>@param <strong>bool</strong> <code>$strict</code> TRUE if type of the element should be checked too</li> <li>@return <strong>int|string|null</strong> Key associated to the value or null if not found</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b', 'c'] )-&gt;search( 'b' ); // 1 Map::from( [1, 2, 3] )-&gt;search( '2', true ); // null because the types doesn't match (int vs. string)"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] )-&gt;<span class="pl-en">search</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// 1</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>] )-&gt;<span class="pl-en">search</span>( <span class="pl-s">'<span class="pl-s">2</span>'</span>, <span class="pl-c1">true</span> ); <span class="pl-c">// null because the types doesn't match (int vs. string)</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">sep()</h3><a id="user-content-sep" class="anchor" aria-label="Permalink: sep()" href="#sep"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sets the seperator for paths to values in multi-dimensional arrays or objects.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public static function sep( string $char ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">function</span> sep( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>char</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$char</code> Separator character, e.g. "." for "key.to.value" instead of "key/to/value"</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Same map for fluid interface</li> </ul> <p dir="auto">This method only changes the separator for the current map instance. To change the separator for all maps created afterwards, use the static <a href="#delimiter">Map::delimiter()</a> method instead.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['foo' =&gt; ['bar' =&gt; 'baz']] )-&gt;sep( '.' )-&gt;get( 'foo.bar' ); // 'baz'"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">bar</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">baz</span>'</span>]] )-&gt;<span class="pl-en">sep</span>( <span class="pl-s">'<span class="pl-s">.</span>'</span> )-&gt;<span class="pl-en">get</span>( <span class="pl-s">'<span class="pl-s">foo.bar</span>'</span> ); <span class="pl-c">// 'baz'</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#delimiter">delimiter()</a> - Sets or returns the seperator for paths to values in multi-dimensional arrays or objects</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">set()</h3><a id="user-content-set" class="anchor" aria-label="Permalink: set()" href="#set"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sets an element in the map by key without returning a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function set( $key, $value ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> set( <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-s1"><span class="pl-c1">$</span>value</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int|string</strong> <code>$key</code> Key to set the new value for</li> <li>@param <strong>mixed</strong> <code>$value</code> New element that should be set</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a'] )-&gt;set( 1, 'b' ); // [0 =&gt; 'a', 1 =&gt; 'b'] Map::from( ['a'] )-&gt;set( 0, 'b' ); // [0 =&gt; 'b']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">set</span>( <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// [0 =&gt; 'a', 1 =&gt; 'b']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">set</span>( <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// [0 =&gt; 'b']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#get">get()</a> - Returns an element from the map by key</li> <li><a href="#with">with()</a> - Returns a copy of the map with the element at the given index replaced with the given value</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">shift()</h3><a id="user-content-shift" class="anchor" aria-label="Permalink: shift()" href="#shift"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns and removes the first element from the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function shift()"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> shift()</pre></div> <ul dir="auto"> <li>@return <strong>mixed|null</strong> Value from map or null if not found</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;shift(); // 'a' Map::from( [] )-&gt;shift(); // null"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">shift</span>(); <span class="pl-c">// 'a'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">shift</span>(); <span class="pl-c">// null</span></pre></div> <p dir="auto"><strong>Performance note:</strong></p> <p dir="auto">The bigger the list, the higher the performance impact because <code>shift()</code> reindexes all existing elements. Usually, it's better to <a href="#reverse">reverse()</a> the list and <a href="#pop">pop()</a> entries from the list afterwards if a significant number of elements should be removed from the list:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$map-&gt;reverse()-&gt;pop();"><pre><span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">reverse</span>()-&gt;<span class="pl-en">pop</span>();</pre></div> <p dir="auto">instead of</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$map-&gt;shift();"><pre><span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">shift</span>();</pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#unshift">unshift()</a> - Pushes an element onto the beginning of the map without returning a new map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">shuffle()</h3><a id="user-content-shuffle" class="anchor" aria-label="Permalink: shuffle()" href="#shuffle"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Shuffles the elements in the map without returning a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function shuffle( bool $assoc = false ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> shuffle( <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>assoc</span> = <span class="pl-c1">false</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>bool</strong> <code>$assoc</code> True to preserve keys, false to assign new keys</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [2 =&gt; 'a', 4 =&gt; 'b'] )-&gt;shuffle(); // ['a', 'b'] in random order with new keys Map::from( [2 =&gt; 'a', 4 =&gt; 'b'] )-&gt;shuffle( true ); // [2 =&gt; 'a', 4 =&gt; 'b'] in random order with keys preserved"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">4</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">shuffle</span>(); <span class="pl-c">// ['a', 'b'] in random order with new keys</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">4</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">shuffle</span>( <span class="pl-c1">true</span> ); <span class="pl-c">// [2 =&gt; 'a', 4 =&gt; 'b'] in random order with keys preserved</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#shuffled">shuffled()</a> - Shuffles the elements in a copy of the map.</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">shuffled()</h3><a id="user-content-shuffled" class="anchor" aria-label="Permalink: shuffled()" href="#shuffled"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Shuffles the elements in a copy of the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function shuffled( bool $assoc = false ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> shuffled( <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>assoc</span> = <span class="pl-c1">false</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>bool</strong> <code>$assoc</code> True to preserve keys, false to assign new keys</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with a shuffled copy of the elements</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [2 =&gt; 'a', 4 =&gt; 'b'] )-&gt;shuffled(); // ['a', 'b'] in random order with new keys Map::from( [2 =&gt; 'a', 4 =&gt; 'b'] )-&gt;shuffled( true ); // [2 =&gt; 'a', 4 =&gt; 'b'] in random order with keys preserved"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">4</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">shuffled</span>(); <span class="pl-c">// ['a', 'b'] in random order with new keys</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">4</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">shuffled</span>( <span class="pl-c1">true</span> ); <span class="pl-c">// [2 =&gt; 'a', 4 =&gt; 'b'] in random order with keys preserved</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#shuffle">shuffle()</a> - Shuffles the elements in the map without returning a new map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">skip()</h3><a id="user-content-skip" class="anchor" aria-label="Permalink: skip()" href="#skip"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns a new map with the given number of items skipped.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function skip( $offset ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> skip( <span class="pl-s1"><span class="pl-c1">$</span>offset</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|int</strong> <code>$offset</code> Number of items to skip or function($item, $key) returning true for skipped items</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The keys of the items returned in the new map are the same as in the original one.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [1, 2, 3, 4] )-&gt;skip( 2 ); // [2 =&gt; 3, 3 =&gt; 4] Map::from( [1, 2, 3, 4] )-&gt;skip( function( $item, $key ) { return $item &lt; 4; } ); // [3 =&gt; 4]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>, <span class="pl-c1">4</span>] )-&gt;<span class="pl-en">skip</span>( <span class="pl-c1">2</span> ); <span class="pl-c">// [2 =&gt; 3, 3 =&gt; 4]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>, <span class="pl-c1">4</span>] )-&gt;<span class="pl-en">skip</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>item</span> &lt; <span class="pl-c1">4</span>; } ); <span class="pl-c">// [3 =&gt; 4]</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">slice()</h3><a id="user-content-slice" class="anchor" aria-label="Permalink: slice()" href="#slice"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns a map with the slice from the original map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function slice( int $offset, int $length = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> slice( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>offset</span>, <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>length</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$offset</code> Number of elements to start from</li> <li>@param <strong>int|null</strong> <code>$length</code> Number of elements to return or NULL for no limit</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The rules for offsets are:</p> <ul dir="auto"> <li>If offset is non-negative, the sequence will start at that offset</li> <li>If offset is negative, the sequence will start that far from the end</li> </ul> <p dir="auto">Similar for the length:</p> <ul dir="auto"> <li>If length is given and is positive, then the sequence will have up to that many elements in it</li> <li>If the array is shorter than the length, then only the available array elements will be present</li> <li>If length is given and is negative then the sequence will stop that many elements from the end</li> <li>If it is omitted, then the sequence will have everything from offset up until the end</li> </ul> <p dir="auto">The keys of the items returned in the new map are the same as in the original one.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b', 'c'] )-&gt;slice( 1 ); // ['b', 'c'] Map::from( ['a', 'b', 'c'] )-&gt;slice( 1, 1 ); // ['b'] Map::from( ['a', 'b', 'c', 'd'] )-&gt;slice( -2, -1 ); // ['c']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] )-&gt;<span class="pl-en">slice</span>( <span class="pl-c1">1</span> ); <span class="pl-c">// ['b', 'c']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] )-&gt;<span class="pl-en">slice</span>( <span class="pl-c1">1</span>, <span class="pl-c1">1</span> ); <span class="pl-c">// ['b']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">d</span>'</span>] )-&gt;<span class="pl-en">slice</span>( -<span class="pl-c1">2</span>, -<span class="pl-c1">1</span> ); <span class="pl-c">// ['c']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#take">take()</a> - Returns a new map with the given number of items.</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">some()</h3><a id="user-content-some" class="anchor" aria-label="Permalink: some()" href="#some"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if at least one element passes the test or is part of the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function some( $values, bool $strict = false ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> some( <span class="pl-s1"><span class="pl-c1">$</span>values</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>strict</span> = <span class="pl-c1">false</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|iterable|mixed</strong> <code>$values</code> Anonymous function with (item, key) parameter, element or list of elements to test against</li> <li>@param <strong>bool</strong> <code>$strict</code> TRUE to check the type too, using FALSE '1' and 1 will be the same</li> <li>@return <strong>bool</strong> TRUE if at least one element is available in map, FALSE if the map contains none of them</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;some( 'a' ); // true Map::from( ['a', 'b'] )-&gt;some( ['a', 'c'] ); // true Map::from( ['a', 'b'] )-&gt;some( function( $item, $key ) { return $item === 'a' } ); // true Map::from( ['a', 'b'] )-&gt;some( ['c', 'd'] ); // false Map::from( ['1', '2'] )-&gt;some( [2], true ); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">some</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">some</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;some( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>item</span> === <span class="pl-s">'<span class="pl-s">a</span>'</span> } ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">some</span>( [<span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">d</span>'</span>] ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">1</span>'</span>, <span class="pl-s">'<span class="pl-s">2</span>'</span>] )-&gt;<span class="pl-en">some</span>( [<span class="pl-c1">2</span>], <span class="pl-c1">true</span> ); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#every">every()</a> - Verifies that all elements pass the test of the given callback</li> <li><a href="#any">any()</a> - Tests if at least one element satisfies the callback function</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">sort()</h3><a id="user-content-sort" class="anchor" aria-label="Permalink: sort()" href="#sort"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts all elements without maintaining the key association.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function sort( int $options = SORT_REGULAR ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> sort( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">SORT_REGULAR</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Sort options for PHP <code>sort()</code></li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The parameter modifies how the values are compared. Possible parameter values are:</p> <ul dir="auto"> <li>SORT_REGULAR : compare elements normally (don't change types)</li> <li>SORT_NUMERIC : compare elements numerically</li> <li>SORT_STRING : compare elements as strings</li> <li>SORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by <code>setlocale()</code></li> <li>SORT_NATURAL : compare elements as strings using "natural ordering" like <code>natsort()</code></li> <li>SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively</li> </ul> <p dir="auto">The keys are NOT preserved and elements get a new index. No new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 'b' =&gt; 0] )-&gt;sort(); // [0 =&gt; 0, 1 =&gt; 1] Map::from( [0 =&gt; 'b', 1 =&gt; 'a'] )-&gt;sort(); // [0 =&gt; 'a', 1 =&gt; 'b']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>] )-&gt;<span class="pl-en">sort</span>(); <span class="pl-c">// [0 =&gt; 0, 1 =&gt; 1]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">sort</span>(); <span class="pl-c">// [0 =&gt; 'a', 1 =&gt; 'b']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#sorted">sorted()</a> - Sorts a copy of the elements using new keys</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">sorted()</h3><a id="user-content-sorted" class="anchor" aria-label="Permalink: sorted()" href="#sorted"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts a copy of the elements using new keys.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function sorted( int $options = SORT_REGULAR ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> sorted( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">SORT_REGULAR</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Sort options for PHP <code>sort()</code></li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The parameter modifies how the values are compared. Possible parameter values are:</p> <ul dir="auto"> <li>SORT_REGULAR : compare elements normally (don't change types)</li> <li>SORT_NUMERIC : compare elements numerically</li> <li>SORT_STRING : compare elements as strings</li> <li>SORT_LOCALE_STRING : compare elements as strings, based on the current locale or changed by <code>setlocale()</code></li> <li>SORT_NATURAL : compare elements as strings using "natural ordering" like <code>natsort()</code></li> <li>SORT_FLAG_CASE : use SORT_STRING|SORT_FLAG_CASE and SORT_NATURAL|SORT_FLAG_CASE to sort strings case-insensitively</li> </ul> <p dir="auto">The keys aren't preserved and elements get a new index and a new map is created before sorting the elements. Thus, <a href="#sort">sort()</a> should be preferred for performance reasons if possible. A new map is created by calling this method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 'b' =&gt; 0] )-&gt;sorted(); // [0 =&gt; 0, 1 =&gt; 1] Map::from( [0 =&gt; 'b', 1 =&gt; 'a'] )-&gt;sorted(); // [0 =&gt; 'a', 1 =&gt; 'b']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">0</span>] )-&gt;<span class="pl-en">sorted</span>(); <span class="pl-c">// [0 =&gt; 0, 1 =&gt; 1]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">sorted</span>(); <span class="pl-c">// [0 =&gt; 'a', 1 =&gt; 'b']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#sort">sort()</a> - Sorts all elements without maintaining the key association</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">splice()</h3><a id="user-content-splice" class="anchor" aria-label="Permalink: splice()" href="#splice"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Removes a portion of the map and replace it with the given replacement, then return the updated map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function splice( int $offset, int $length = null, $replacement = [] ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> splice( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>offset</span>, <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>length</span> = <span class="pl-c1">null</span>, <span class="pl-s1"><span class="pl-c1">$</span>replacement</span> = [] ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$offset</code> Number of elements to start from</li> <li>@param <strong>int|null</strong> <code>$length</code> Number of elements to remove, NULL for all</li> <li>@param <strong>mixed</strong> <code>$replacement</code> List of elements to insert</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The rules for offsets are:</p> <ul dir="auto"> <li>If offset is non-negative, the sequence will start at that offset</li> <li>If offset is negative, the sequence will start that far from the end</li> </ul> <p dir="auto">Similar for the length:</p> <ul dir="auto"> <li>If length is given and is positive, then the sequence will have up to that many elements in it</li> <li>If the array is shorter than the length, then only the available array elements will be present</li> <li>If length is given and is negative then the sequence will stop that many elements from the end</li> <li>If it is omitted, then the sequence will have everything from offset up until the end</li> </ul> <p dir="auto">Numerical array indexes are NOT preserved.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b', 'c'] )-&gt;splice( 1 ); // ['b', 'c'] and map contains ['a'] Map::from( ['a', 'b', 'c'] )-&gt;splice( 1, 1, ['x', 'y'] ); // ['b'] and map contains ['a', 'x', 'y', 'c']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] )-&gt;<span class="pl-en">splice</span>( <span class="pl-c1">1</span> ); <span class="pl-c">// ['b', 'c'] and map contains ['a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] )-&gt;<span class="pl-en">splice</span>( <span class="pl-c1">1</span>, <span class="pl-c1">1</span>, [<span class="pl-s">'<span class="pl-s">x</span>'</span>, <span class="pl-s">'<span class="pl-s">y</span>'</span>] ); <span class="pl-c">// ['b'] and map contains ['a', 'x', 'y', 'c']</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">strAfter()</h3><a id="user-content-strafter" class="anchor" aria-label="Permalink: strAfter()" href="#strafter"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the strings after the passed value.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function strAfter( string $value, bool $case = false, string $encoding = 'UTF-8' ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> strAfter( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>case</span> = <span class="pl-c1">false</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>encoding</span> = <span class="pl-s">'<span class="pl-s">UTF-8</span>'</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$value</code> Character or string to search for</li> <li>@param <strong>bool</strong> <code>$case</code> TRUE if search should be case insensitive, FALSE if case-sensitive</li> <li>@param <strong>string</strong> <code>$encoding</code> Character encoding of the strings, e.g. "UTF-8" (default), "ASCII", "ISO-8859-1", etc.</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">All scalar values (bool, int, float, string) will be converted to strings. Non-scalar values as well as empty strings will be skipped and are not part of the result.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['äöüß'] )-&gt;strAfter( 'ö' ); // ['üß'] Map::from( ['abc'] )-&gt;strAfter( '' ); // ['abc'] Map::from( ['abc'] )-&gt;strAfter( 'b' ); // ['c'] Map::from( ['abc'] )-&gt;strAfter( 'c' ); // [''] Map::from( ['abc'] )-&gt;strAfter( 'x' ) // [] Map::from( [''] )-&gt;strAfter( '' ); // [] Map::from( [1, 1.0, true, ['x'], new \stdClass] )-&gt;strAfter( '' ); // ['1', '1', '1'] Map::from( [0, 0.0, false, []] )-&gt;strAfter( '' ); // ['0', '0']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">äöüß</span>'</span>] )-&gt;<span class="pl-en">strAfter</span>( <span class="pl-s">'<span class="pl-s">ö</span>'</span> ); <span class="pl-c">// ['üß']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strAfter</span>( <span class="pl-s">''</span> ); <span class="pl-c">// ['abc']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strAfter</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// ['c']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strAfter</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span> ); <span class="pl-c">// ['']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strAfter</span>( <span class="pl-s">'<span class="pl-s">x</span>'</span> ) <span class="pl-c">// []</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">''</span>] )-&gt;<span class="pl-en">strAfter</span>( <span class="pl-s">''</span> ); <span class="pl-c">// []</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">1.0</span>, <span class="pl-c1">true</span>, [<span class="pl-s">'<span class="pl-s">x</span>'</span>], <span class="pl-k">new</span> \<span class="pl-v">stdClass</span>] )-&gt;<span class="pl-en">strAfter</span>( <span class="pl-s">''</span> ); <span class="pl-c">// ['1', '1', '1']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span>, <span class="pl-c1">0.0</span>, <span class="pl-c1">false</span>, []] )-&gt;<span class="pl-en">strAfter</span>( <span class="pl-s">''</span> ); <span class="pl-c">// ['0', '0']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#strbefore">strBefore()</a> - Returns the strings before the passed value</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">strBefore()</h3><a id="user-content-strbefore" class="anchor" aria-label="Permalink: strBefore()" href="#strbefore"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the strings before the passed value.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function strBefore( string $value, bool $case = false, string $encoding = 'UTF-8' ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> strBefore( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>case</span> = <span class="pl-c1">false</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>encoding</span> = <span class="pl-s">'<span class="pl-s">UTF-8</span>'</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$value</code> Character or string to search for</li> <li>@param <strong>bool</strong> <code>$case</code> TRUE if search should be case insensitive, FALSE if case-sensitive</li> <li>@param <strong>string</strong> <code>$encoding</code> Character encoding of the strings, e.g. "UTF-8" (default), "ASCII", "ISO-8859-1", etc.</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">All scalar values (bool, int, float, string) will be converted to strings. Non-scalar values as well as empty strings will be skipped and are not part of the result.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['äöüß'] )-&gt;strBefore( 'ü' ); // ['äö'] Map::from( ['abc'] )-&gt;strBefore( '' ); // ['abc'] Map::from( ['abc'] )-&gt;strBefore( 'b' ); // ['a'] Map::from( ['abc'] )-&gt;strBefore( 'a' ); // [''] Map::from( ['abc'] )-&gt;strBefore( 'x' ) // [] Map::from( [''] )-&gt;strBefore( '' ); // [] Map::from( [1, 1.0, true, ['x'], new \stdClass] )-&gt;strBefore( '' ); // ['1', '1', '1'] Map::from( [0, 0.0, false, []] )-&gt;strBefore( '' ); // ['0', '0']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">äöüß</span>'</span>] )-&gt;<span class="pl-en">strBefore</span>( <span class="pl-s">'<span class="pl-s">ü</span>'</span> ); <span class="pl-c">// ['äö']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strBefore</span>( <span class="pl-s">''</span> ); <span class="pl-c">// ['abc']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strBefore</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// ['a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strBefore</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// ['']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strBefore</span>( <span class="pl-s">'<span class="pl-s">x</span>'</span> ) <span class="pl-c">// []</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">''</span>] )-&gt;<span class="pl-en">strBefore</span>( <span class="pl-s">''</span> ); <span class="pl-c">// []</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">1.0</span>, <span class="pl-c1">true</span>, [<span class="pl-s">'<span class="pl-s">x</span>'</span>], <span class="pl-k">new</span> \<span class="pl-v">stdClass</span>] )-&gt;<span class="pl-en">strBefore</span>( <span class="pl-s">''</span> ); <span class="pl-c">// ['1', '1', '1']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span>, <span class="pl-c1">0.0</span>, <span class="pl-c1">false</span>, []] )-&gt;<span class="pl-en">strBefore</span>( <span class="pl-s">''</span> ); <span class="pl-c">// ['0', '0']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#strafter">strAfter()</a> - Returns the strings after the passed value</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">strCompare()</h3><a id="user-content-strcompare" class="anchor" aria-label="Permalink: strCompare()" href="#strcompare"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Compares the value against all map elements.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function strCompare( string $value, bool $case = true ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> strCompare( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>case</span> = <span class="pl-c1">true</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$value</code> Value to compare map elements to</li> <li>@param <strong>bool</strong> <code>$case</code> TRUE if comparison is case sensitive, FALSE to ignore upper/lower case</li> <li>@return <strong>bool</strong> TRUE If at least one element matches, FALSE if value is not in map</li> </ul> <p dir="auto">All scalar values (bool, float, int and string) are casted to string values before comparing to the given value. Non-scalar values in the map are ignored.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['foo', 'bar'] )-&gt;strCompare( 'foo' ); // true Map::from( ['foo', 'bar'] )-&gt;strCompare( 'Foo', false ); // true (case insensitive) Map::from( [123, 12.3] )-&gt;strCompare( '12.3' ); // true Map::from( [false, true] )-&gt;strCompare( '1' ); // true Map::from( ['foo', 'bar'] )-&gt;strCompare( 'Foo' ); // false (case sensitive) Map::from( ['foo', 'bar'] )-&gt;strCompare( 'baz' ); // false Map::from( [new \stdClass(), 'bar'] )-&gt;strCompare( 'foo' ); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">strCompare</span>( <span class="pl-s">'<span class="pl-s">foo</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">strCompare</span>( <span class="pl-s">'<span class="pl-s">Foo</span>'</span>, <span class="pl-c1">false</span> ); <span class="pl-c">// true (case insensitive)</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">123</span>, <span class="pl-c1">12.3</span>] )-&gt;<span class="pl-en">strCompare</span>( <span class="pl-s">'<span class="pl-s">12.3</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">false</span>, <span class="pl-c1">true</span>] )-&gt;<span class="pl-en">strCompare</span>( <span class="pl-s">'<span class="pl-s">1</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">strCompare</span>( <span class="pl-s">'<span class="pl-s">Foo</span>'</span> ); <span class="pl-c">// false (case sensitive)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span>, <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">strCompare</span>( <span class="pl-s">'<span class="pl-s">baz</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-k">new</span> \<span class="pl-v">stdClass</span>(), <span class="pl-s">'<span class="pl-s">bar</span>'</span>] )-&gt;<span class="pl-en">strCompare</span>( <span class="pl-s">'<span class="pl-s">foo</span>'</span> ); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#contains">contains()</a> - Tests if an item exists in the map</li> <li><a href="#in">in()</a> - Tests if element is included</li> <li><a href="#includes">includes()</a> - Tests if element is included</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">strContains()</h3><a id="user-content-strcontains" class="anchor" aria-label="Permalink: strContains()" href="#strcontains"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if at least one of the passed strings is part of at least one entry.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function strContains( $value, string $encoding = 'UTF-8' ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> strContains( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>encoding</span> = <span class="pl-s">'<span class="pl-s">UTF-8</span>'</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>array|string</strong> <code>$value</code> The string or list of strings to search for in each entry</li> <li>@param <strong>string</strong> <code>$encoding</code> Character encoding of the strings, e.g. "UTF-8" (default), "ASCII", "ISO-8859-1", etc.</li> <li>@return <strong>bool</strong> TRUE if one of the entries contains one of the strings, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['abc'] )-&gt;strContains( '' ); // true Map::from( ['abc'] )-&gt;strContains( 'a' ); // true Map::from( ['abc'] )-&gt;strContains( 'bc' ); // true Map::from( [12345] )-&gt;strContains( '23' ); // true Map::from( [123.4] )-&gt;strContains( 23.4 ); // true Map::from( [12345] )-&gt;strContains( false ); // true ('12345' contains '') Map::from( [12345] )-&gt;strContains( true ); // true ('12345' contains '1') Map::from( [false] )-&gt;strContains( false ); // true ('' contains '') Map::from( [''] )-&gt;strContains( false ); // true ('' contains '') Map::from( ['abc'] )-&gt;strContains( ['b', 'd'] ); // true Map::from( ['abc'] )-&gt;strContains( 'c', 'ASCII' ); // true Map::from( ['abc'] )-&gt;strContains( 'd' ); // false Map::from( ['abc'] )-&gt;strContains( 'cb' ); // false Map::from( [23456] )-&gt;strContains( true ); // false ('23456' doesn't contain '1') Map::from( [false] )-&gt;strContains( 0 ); // false ('' doesn't contain '0') Map::from( ['abc'] )-&gt;strContains( ['d', 'e'] ); // false Map::from( ['abc'] )-&gt;strContains( 'cb', 'ASCII' ); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-s">''</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-s">'<span class="pl-s">bc</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">12345</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-s">'<span class="pl-s">23</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">123.4</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-c1">23.4</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">12345</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-c1">false</span> ); <span class="pl-c">// true ('12345' contains '')</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">12345</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-c1">true</span> ); <span class="pl-c">// true ('12345' contains '1')</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">false</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-c1">false</span> ); <span class="pl-c">// true ('' contains '')</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">''</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-c1">false</span> ); <span class="pl-c">// true ('' contains '')</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strContains</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">d</span>'</span>] ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">ASCII</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-s">'<span class="pl-s">d</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-s">'<span class="pl-s">cb</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">23456</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-c1">true</span> ); <span class="pl-c">// false ('23456' doesn't contain '1')</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">false</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-c1">0</span> ); <span class="pl-c">// false ('' doesn't contain '0')</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strContains</span>( [<span class="pl-s">'<span class="pl-s">d</span>'</span>, <span class="pl-s">'<span class="pl-s">e</span>'</span>] ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-s">'<span class="pl-s">cb</span>'</span>, <span class="pl-s">'<span class="pl-s">ASCII</span>'</span> ); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#strcontainsall">strContainsAll()</a> - Tests if all of the entries contains one of the passed strings</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">strContainsAll()</h3><a id="user-content-strcontainsall" class="anchor" aria-label="Permalink: strContainsAll()" href="#strcontainsall"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if all of the entries contains one of the passed strings.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function strContainsAll( $value, string $encoding = 'UTF-8' ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> strContainsAll( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>encoding</span> = <span class="pl-s">'<span class="pl-s">UTF-8</span>'</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>array|string</strong> <code>$value</code> The string or list of strings to search for in each entry</li> <li>@param <strong>string</strong> <code>$encoding</code> Character encoding of the strings, e.g. "UTF-8" (default), "ASCII", "ISO-8859-1", etc.</li> <li>@return <strong>bool</strong> TRUE if all of the entries contains at least one of the strings, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['abc', 'def'] )-&gt;strContainsAll( '' ); // true Map::from( ['abc', 'cba'] )-&gt;strContainsAll( 'a' ); // true Map::from( ['abc', 'bca'] )-&gt;strContainsAll( 'bc' ); // true Map::from( [12345, '230'] )-&gt;strContainsAll( '23' ); // true Map::from( [123.4, 23.42] )-&gt;strContainsAll( 23.4 ); // true Map::from( [12345, '234'] )-&gt;strContainsAll( [true, false] ); // true ('12345' contains '1' and '234' contains '') Map::from( ['', false] )-&gt;strContainsAll( false ); // true ('' contains '') Map::from( ['abc', 'def'] )-&gt;strContainsAll( ['b', 'd'] ); // true Map::from( ['abc', 'ecf'] )-&gt;strContainsAll( 'c', 'ASCII' ); // true Map::from( ['abc', 'def'] )-&gt;strContainsAll( 'd' ); // false Map::from( ['abc', 'cab'] )-&gt;strContainsAll( 'cb' ); // false Map::from( [23456, '123'] )-&gt;strContains( true ); // false ('23456' doesn't contain '1') Map::from( [false, '000'] )-&gt;strContains( 0 ); // false ('' doesn't contain '0') Map::from( ['abc', 'acf'] )-&gt;strContainsAll( ['d', 'e'] ); // false Map::from( ['abc', 'bca'] )-&gt;strContainsAll( 'cb', 'ASCII' ); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">def</span>'</span>] )-&gt;<span class="pl-en">strContainsAll</span>( <span class="pl-s">''</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">cba</span>'</span>] )-&gt;<span class="pl-en">strContainsAll</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">bca</span>'</span>] )-&gt;<span class="pl-en">strContainsAll</span>( <span class="pl-s">'<span class="pl-s">bc</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">12345</span>, <span class="pl-s">'<span class="pl-s">230</span>'</span>] )-&gt;<span class="pl-en">strContainsAll</span>( <span class="pl-s">'<span class="pl-s">23</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">123.4</span>, <span class="pl-c1">23.42</span>] )-&gt;<span class="pl-en">strContainsAll</span>( <span class="pl-c1">23.4</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">12345</span>, <span class="pl-s">'<span class="pl-s">234</span>'</span>] )-&gt;<span class="pl-en">strContainsAll</span>( [<span class="pl-c1">true</span>, <span class="pl-c1">false</span>] ); <span class="pl-c">// true ('12345' contains '1' and '234' contains '')</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">''</span>, <span class="pl-c1">false</span>] )-&gt;<span class="pl-en">strContainsAll</span>( <span class="pl-c1">false</span> ); <span class="pl-c">// true ('' contains '')</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">def</span>'</span>] )-&gt;<span class="pl-en">strContainsAll</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">d</span>'</span>] ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">ecf</span>'</span>] )-&gt;<span class="pl-en">strContainsAll</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">ASCII</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">def</span>'</span>] )-&gt;<span class="pl-en">strContainsAll</span>( <span class="pl-s">'<span class="pl-s">d</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">cab</span>'</span>] )-&gt;<span class="pl-en">strContainsAll</span>( <span class="pl-s">'<span class="pl-s">cb</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">23456</span>, <span class="pl-s">'<span class="pl-s">123</span>'</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-c1">true</span> ); <span class="pl-c">// false ('23456' doesn't contain '1')</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">false</span>, <span class="pl-s">'<span class="pl-s">000</span>'</span>] )-&gt;<span class="pl-en">strContains</span>( <span class="pl-c1">0</span> ); <span class="pl-c">// false ('' doesn't contain '0')</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">acf</span>'</span>] )-&gt;<span class="pl-en">strContainsAll</span>( [<span class="pl-s">'<span class="pl-s">d</span>'</span>, <span class="pl-s">'<span class="pl-s">e</span>'</span>] ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">bca</span>'</span>] )-&gt;<span class="pl-en">strContainsAll</span>( <span class="pl-s">'<span class="pl-s">cb</span>'</span>, <span class="pl-s">'<span class="pl-s">ASCII</span>'</span> ); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#strcontains">strContains()</a> - Tests if at least one of the passed strings is part of at least one entry</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">strEnds()</h3><a id="user-content-strends" class="anchor" aria-label="Permalink: strEnds()" href="#strends"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if at least one of the entries ends with one of the passed strings.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function strEnds( $value, string $encoding = 'UTF-8' ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> strEnds( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>encoding</span> = <span class="pl-s">'<span class="pl-s">UTF-8</span>'</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>array|string</strong> <code>$value</code> The string or list of strings to search for in each entry</li> <li>@param <strong>string</strong> <code>$encoding</code> Character encoding of the strings, e.g. "UTF-8" (default), "ASCII", "ISO-8859-1", etc.</li> <li>@return <strong>bool</strong> TRUE if one of the entries ends with the string, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['abc'] )-&gt;strEnds( '' ); // true Map::from( ['abc'] )-&gt;strEnds( 'c' ); // true Map::from( ['abc'] )-&gt;strEnds( 'bc' ); // true Map::from( ['abc'] )-&gt;strEnds( ['b', 'c'] ); // true Map::from( ['abc'] )-&gt;strEnds( 'c', 'ASCII' ); // true Map::from( ['abc'] )-&gt;strEnds( 'a' ); // false Map::from( ['abc'] )-&gt;strEnds( 'cb' ); // false Map::from( ['abc'] )-&gt;strEnds( ['d', 'b'] ); // false Map::from( ['abc'] )-&gt;strEnds( 'cb', 'ASCII' ); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strEnds</span>( <span class="pl-s">''</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strEnds</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strEnds</span>( <span class="pl-s">'<span class="pl-s">bc</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strEnds</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strEnds</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">ASCII</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strEnds</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strEnds</span>( <span class="pl-s">'<span class="pl-s">cb</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strEnds</span>( [<span class="pl-s">'<span class="pl-s">d</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strEnds</span>( <span class="pl-s">'<span class="pl-s">cb</span>'</span>, <span class="pl-s">'<span class="pl-s">ASCII</span>'</span> ); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#strendsall">strEndsAll()</a> - Tests if all of the entries ends with at least one of the passed strings</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">strEndsAll()</h3><a id="user-content-strendsall" class="anchor" aria-label="Permalink: strEndsAll()" href="#strendsall"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if all of the entries ends with at least one of the passed strings.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function strEndsAll( $value, string $encoding = 'UTF-8' ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> strEndsAll( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>encoding</span> = <span class="pl-s">'<span class="pl-s">UTF-8</span>'</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>array|string</strong> <code>$value</code> The string or list of strings to search for in each entry</li> <li>@param <strong>string</strong> <code>$encoding</code> Character encoding of the strings, e.g. "UTF-8" (default), "ASCII", "ISO-8859-1", etc.</li> <li>@return <strong>bool</strong> TRUE if all of the entries ends with at least one of the strings, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['abc', 'def'] )-&gt;strEndsAll( '' ); // true Map::from( ['abc', 'bac'] )-&gt;strEndsAll( 'c' ); // true Map::from( ['abc', 'cbc'] )-&gt;strEndsAll( 'bc' ); // true Map::from( ['abc', 'def'] )-&gt;strEndsAll( ['c', 'f'] ); // true Map::from( ['abc', 'efc'] )-&gt;strEndsAll( 'c', 'ASCII' ); // true Map::from( ['abc', 'fed'] )-&gt;strEndsAll( 'd' ); // false Map::from( ['abc', 'bca'] )-&gt;strEndsAll( 'ca' ); // false Map::from( ['abc', 'acf'] )-&gt;strEndsAll( ['a', 'c'] ); // false Map::from( ['abc', 'bca'] )-&gt;strEndsAll( 'ca', 'ASCII' ); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">def</span>'</span>] )-&gt;<span class="pl-en">strEndsAll</span>( <span class="pl-s">''</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">bac</span>'</span>] )-&gt;<span class="pl-en">strEndsAll</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">cbc</span>'</span>] )-&gt;<span class="pl-en">strEndsAll</span>( <span class="pl-s">'<span class="pl-s">bc</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">def</span>'</span>] )-&gt;<span class="pl-en">strEndsAll</span>( [<span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">f</span>'</span>] ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">efc</span>'</span>] )-&gt;<span class="pl-en">strEndsAll</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">ASCII</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">fed</span>'</span>] )-&gt;<span class="pl-en">strEndsAll</span>( <span class="pl-s">'<span class="pl-s">d</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">bca</span>'</span>] )-&gt;<span class="pl-en">strEndsAll</span>( <span class="pl-s">'<span class="pl-s">ca</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">acf</span>'</span>] )-&gt;<span class="pl-en">strEndsAll</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">bca</span>'</span>] )-&gt;<span class="pl-en">strEndsAll</span>( <span class="pl-s">'<span class="pl-s">ca</span>'</span>, <span class="pl-s">'<span class="pl-s">ASCII</span>'</span> ); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#strends">strEnds()</a> - Tests if at least one of the entries ends with one of the passed strings</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">string()</h3><a id="user-content-string" class="anchor" aria-label="Permalink: string()" href="#string"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns an element by key and casts it to string if possible.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function string( $key, $default = '' ) : string"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> string( <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-s1"><span class="pl-c1">$</span>default</span> = <span class="pl-s">''</span> ) : <span class="pl-smi">string</span></pre></div> <ul dir="auto"> <li>@param <strong>int|string</strong> <code>$key</code> Key or path to the requested item</li> <li>@param <strong>mixed</strong> <code>$default</code> Default value if key isn't found (will be casted to string)</li> <li>@return <strong>string</strong> Value from map or default value</li> </ul> <p dir="auto">This does also work to map values from multi-dimensional arrays by passing the keys of the arrays separated by the delimiter ("/" by default), e.g. <code>key1/key2/key3</code> to get <code>val</code> from <code>['key1' =&gt; ['key2' =&gt; ['key3' =&gt; 'val']]]</code>. The same applies to public properties of objects or objects implementing <code>__isset()</code> and <code>__get()</code> methods.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; true] )-&gt;string( 'a' ); // '1' Map::from( ['a' =&gt; 1] )-&gt;string( 'a' ); // '1' Map::from( ['a' =&gt; 1.1] )-&gt;string( 'a' ); // '1.1' Map::from( ['a' =&gt; 'abc'] )-&gt;string( 'a' ); // 'abc' Map::from( ['a' =&gt; ['b' =&gt; ['c' =&gt; 'yes']]] )-&gt;string( 'a/b/c' ); // 'yes' Map::from( [] )-&gt;string( 'c', function() { return 'no'; } ); // 'no' Map::from( [] )-&gt;string( 'b' ); // '' Map::from( ['b' =&gt; ''] )-&gt;string( 'b' ); // '' Map::from( ['b' =&gt; null] )-&gt;string( 'b' ); // '' Map::from( ['b' =&gt; [true]] )-&gt;string( 'b' ); // '' Map::from( ['b' =&gt; '#resource'] )-&gt;string( 'b' ); // '' (resources are not scalar) Map::from( ['b' =&gt; new \stdClass] )-&gt;string( 'b' ); // '' (objects are not scalar) Map::from( [] )-&gt;string( 'c', new \Exception( 'error' ) ); // throws exception"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">true</span>] )-&gt;<span class="pl-en">string</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// '1'</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>] )-&gt;<span class="pl-en">string</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// '1'</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1.1</span>] )-&gt;<span class="pl-en">string</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// '1.1'</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">string</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// 'abc'</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">yes</span>'</span>]]] )-&gt;<span class="pl-en">string</span>( <span class="pl-s">'<span class="pl-s">a/b/c</span>'</span> ); <span class="pl-c">// 'yes'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">string</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-k">function</span>() { <span class="pl-k">return</span> <span class="pl-s">'<span class="pl-s">no</span>'</span>; } ); <span class="pl-c">// 'no'</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">string</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// ''</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">''</span>] )-&gt;<span class="pl-en">string</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// ''</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">null</span>] )-&gt;<span class="pl-en">string</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// ''</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; [<span class="pl-c1">true</span>]] )-&gt;<span class="pl-en">string</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// ''</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">#resource</span>'</span>] )-&gt;<span class="pl-en">string</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// '' (resources are not scalar)</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-k">new</span> \<span class="pl-v">stdClass</span>] )-&gt;<span class="pl-en">string</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// '' (objects are not scalar)</span> Map::<span class="pl-en">from</span>( [] )-&gt;<span class="pl-en">string</span>( <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-k">new</span> \<span class="pl-v">Exception</span>( <span class="pl-s">'<span class="pl-s">error</span>'</span> ) ); <span class="pl-c">// throws exception</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#bool">bool()</a> - Returns an element by key and casts it to boolean if possible</li> <li><a href="#cast">cast()</a> - Casts all entries to the passed type</li> <li><a href="#get">get()</a> - Returns an element from the map by key</li> <li><a href="#float">float()</a> - Returns an element by key and casts it to float if possible</li> <li><a href="#int">int()</a> - Returns an element by key and casts it to integer if possible</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">strLower()</h3><a id="user-content-strlower" class="anchor" aria-label="Permalink: strLower()" href="#strlower"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Converts all alphabetic characters in strings to lower case.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function strLower( string $encoding = 'UTF-8' ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> strLower( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>encoding</span> = <span class="pl-s">'<span class="pl-s">UTF-8</span>'</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$encoding</code> Character encoding of the strings, e.g. "UTF-8" (default), "ASCII", "ISO-8859-1", etc.</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['My String'] )-&gt;strLower(); // [&quot;my string&quot;] Map::from( ['Τάχιστη'] )-&gt;strLower(); // [&quot;τάχιστη&quot;] Map::from( ['Äpfel', 'Birnen'] )-&gt;strLower( 'ISO-8859-1' ); // [&quot;äpfel&quot;, &quot;birnen&quot;]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">My String</span>'</span>] )-&gt;<span class="pl-en">strLower</span>(); <span class="pl-c">// ["my string"]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">Τάχιστη</span>'</span>] )-&gt;<span class="pl-en">strLower</span>(); <span class="pl-c">// ["τάχιστη"]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">Äpfel</span>'</span>, <span class="pl-s">'<span class="pl-s">Birnen</span>'</span>] )-&gt;<span class="pl-en">strLower</span>( <span class="pl-s">'<span class="pl-s">ISO-8859-1</span>'</span> ); <span class="pl-c">// ["äpfel", "birnen"]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#strupper">strUpper()</a> - Converts all alphabetic characters in strings to upper case</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">strReplace()</h3><a id="user-content-strreplace" class="anchor" aria-label="Permalink: strReplace()" href="#strreplace"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Replaces all occurrences of the search string with the replacement string.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function strReplace( $search, $replace, bool $case = false ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> strReplace( <span class="pl-s1"><span class="pl-c1">$</span>search</span>, <span class="pl-s1"><span class="pl-c1">$</span>replace</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>case</span> = <span class="pl-c1">false</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>array|string</strong> <code>$search</code> String or list of strings to search for</li> <li>@param <strong>array|string</strong> <code>$replace</code> String or list of strings of replacement strings</li> <li>@param <strong>bool</strong> <code>$case</code> TRUE if replacements should be case insensitive, FALSE if case-sensitive</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">If you use an array of strings for search or search/replacement, the order of the strings matters! Each search string found is replaced by the corresponding replacement string at the same position.</p> <p dir="auto">In case of array parameters and if the number of replacement strings is less than the number of search strings, the search strings with no corresponding replacement string are replaced with empty strings. Replacement strings with no corresponding search string are ignored.</p> <p dir="auto">An array parameter for the replacements is only allowed if the search parameter is an array of strings too!</p> <p dir="auto">Because the method replaces from left to right, it might replace a previously inserted value when doing multiple replacements. Entries which are non-string values are left untouched.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['google.com', 'aimeos.com'] )-&gt;strReplace( '.com', '.de' ); // ['google.de', 'aimeos.de'] Map::from( ['google.com', 'aimeos.org'] )-&gt;strReplace( ['.com', '.org'], '.de' ); // ['google.de', 'aimeos.de'] Map::from( ['google.com', 'aimeos.org'] )-&gt;strReplace( ['.com', '.org'], ['.de'] ); // ['google.de', 'aimeos'] Map::from( ['google.com', 'aimeos.org'] )-&gt;strReplace( ['.com', '.org'], ['.fr', '.de'] ); // ['google.fr', 'aimeos.de'] Map::from( ['google.com', 'aimeos.com'] )-&gt;strReplace( ['.com', '.co'], ['.co', '.de', '.fr'] ); // ['google.de', 'aimeos.de'] Map::from( ['google.com', 'aimeos.com', 123] )-&gt;strReplace( '.com', '.de' ); // ['google.de', 'aimeos.de', 123] Map::from( ['GOOGLE.COM', 'AIMEOS.COM'] )-&gt;strReplace( '.com', '.de', true ); // ['GOOGLE.de', 'AIMEOS.de']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">google.com</span>'</span>, <span class="pl-s">'<span class="pl-s">aimeos.com</span>'</span>] )-&gt;<span class="pl-en">strReplace</span>( <span class="pl-s">'<span class="pl-s">.com</span>'</span>, <span class="pl-s">'<span class="pl-s">.de</span>'</span> ); <span class="pl-c">// ['google.de', 'aimeos.de']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">google.com</span>'</span>, <span class="pl-s">'<span class="pl-s">aimeos.org</span>'</span>] )-&gt;<span class="pl-en">strReplace</span>( [<span class="pl-s">'<span class="pl-s">.com</span>'</span>, <span class="pl-s">'<span class="pl-s">.org</span>'</span>], <span class="pl-s">'<span class="pl-s">.de</span>'</span> ); <span class="pl-c">// ['google.de', 'aimeos.de']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">google.com</span>'</span>, <span class="pl-s">'<span class="pl-s">aimeos.org</span>'</span>] )-&gt;<span class="pl-en">strReplace</span>( [<span class="pl-s">'<span class="pl-s">.com</span>'</span>, <span class="pl-s">'<span class="pl-s">.org</span>'</span>], [<span class="pl-s">'<span class="pl-s">.de</span>'</span>] ); <span class="pl-c">// ['google.de', 'aimeos']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">google.com</span>'</span>, <span class="pl-s">'<span class="pl-s">aimeos.org</span>'</span>] )-&gt;<span class="pl-en">strReplace</span>( [<span class="pl-s">'<span class="pl-s">.com</span>'</span>, <span class="pl-s">'<span class="pl-s">.org</span>'</span>], [<span class="pl-s">'<span class="pl-s">.fr</span>'</span>, <span class="pl-s">'<span class="pl-s">.de</span>'</span>] ); <span class="pl-c">// ['google.fr', 'aimeos.de']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">google.com</span>'</span>, <span class="pl-s">'<span class="pl-s">aimeos.com</span>'</span>] )-&gt;<span class="pl-en">strReplace</span>( [<span class="pl-s">'<span class="pl-s">.com</span>'</span>, <span class="pl-s">'<span class="pl-s">.co</span>'</span>], [<span class="pl-s">'<span class="pl-s">.co</span>'</span>, <span class="pl-s">'<span class="pl-s">.de</span>'</span>, <span class="pl-s">'<span class="pl-s">.fr</span>'</span>] ); <span class="pl-c">// ['google.de', 'aimeos.de']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">google.com</span>'</span>, <span class="pl-s">'<span class="pl-s">aimeos.com</span>'</span>, <span class="pl-c1">123</span>] )-&gt;<span class="pl-en">strReplace</span>( <span class="pl-s">'<span class="pl-s">.com</span>'</span>, <span class="pl-s">'<span class="pl-s">.de</span>'</span> ); <span class="pl-c">// ['google.de', 'aimeos.de', 123]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">GOOGLE.COM</span>'</span>, <span class="pl-s">'<span class="pl-s">AIMEOS.COM</span>'</span>] )-&gt;<span class="pl-en">strReplace</span>( <span class="pl-s">'<span class="pl-s">.com</span>'</span>, <span class="pl-s">'<span class="pl-s">.de</span>'</span>, <span class="pl-c1">true</span> ); <span class="pl-c">// ['GOOGLE.de', 'AIMEOS.de']</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">strStarts()</h3><a id="user-content-strstarts" class="anchor" aria-label="Permalink: strStarts()" href="#strstarts"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if at least one of the entries starts with at least one of the passed strings.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function strStarts( $value, string $encoding = 'UTF-8' ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> strStarts( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>encoding</span> = <span class="pl-s">'<span class="pl-s">UTF-8</span>'</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>array|string</strong> <code>$value</code> The string or list of strings to search for in each entry</li> <li>@param <strong>string</strong> <code>$encoding</code> Character encoding of the strings, e.g. "UTF-8" (default), "ASCII", "ISO-8859-1", etc.</li> <li>@return <strong>bool</strong> TRUE if one of the entries starts with one of the strings, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['abc'] )-&gt;strStarts( '' ); // true Map::from( ['abc'] )-&gt;strStarts( 'a' ); // true Map::from( ['abc'] )-&gt;strStarts( 'ab' ); // true Map::from( ['abc'] )-&gt;strStarts( ['a', 'b'] ); // true Map::from( ['abc'] )-&gt;strStarts( 'ab', 'ASCII' ); // true Map::from( ['abc'] )-&gt;strStarts( 'b' ); // false Map::from( ['abc'] )-&gt;strStarts( 'bc' ); // false Map::from( ['abc'] )-&gt;strStarts( ['b', 'c'] ); // false Map::from( ['abc'] )-&gt;strStarts( 'bc', 'ASCII' ); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strStarts</span>( <span class="pl-s">''</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strStarts</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strStarts</span>( <span class="pl-s">'<span class="pl-s">ab</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strStarts</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strStarts</span>( <span class="pl-s">'<span class="pl-s">ab</span>'</span>, <span class="pl-s">'<span class="pl-s">ASCII</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strStarts</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strStarts</span>( <span class="pl-s">'<span class="pl-s">bc</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strStarts</span>( [<span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>] )-&gt;<span class="pl-en">strStarts</span>( <span class="pl-s">'<span class="pl-s">bc</span>'</span>, <span class="pl-s">'<span class="pl-s">ASCII</span>'</span> ); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#strstartsall">strStartsAll()</a> - Tests if all of the entries starts with one of the passed strings</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">strStartsAll()</h3><a id="user-content-strstartsall" class="anchor" aria-label="Permalink: strStartsAll()" href="#strstartsall"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Tests if all of the entries starts with one of the passed strings.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function strStartsAll( $value, string $encoding = 'UTF-8' ) : bool"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> strStartsAll( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>encoding</span> = <span class="pl-s">'<span class="pl-s">UTF-8</span>'</span> ) : <span class="pl-smi">bool</span></pre></div> <ul dir="auto"> <li>@param <strong>array|string</strong> <code>$value</code> The string or list of strings to search for in each entry</li> <li>@param <strong>string</strong> <code>$encoding</code> Character encoding of the strings, e.g. "UTF-8" (default), "ASCII", "ISO-8859-1", etc.</li> <li>@return <strong>bool</strong> TRUE if one of the entries starts with one of the strings, FALSE if not</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['abc', 'def'] )-&gt;strStartsAll( '' ); // true Map::from( ['abc', 'acb'] )-&gt;strStartsAll( 'a' ); // true Map::from( ['abc', 'aba'] )-&gt;strStartsAll( 'ab' ); // true Map::from( ['abc', 'def'] )-&gt;strStartsAll( ['a', 'd'] ); // true Map::from( ['abc', 'acf'] )-&gt;strStartsAll( 'a', 'ASCII' ); // true Map::from( ['abc', 'def'] )-&gt;strStartsAll( 'd' ); // false Map::from( ['abc', 'bca'] )-&gt;strStartsAll( 'ab' ); // false Map::from( ['abc', 'bac'] )-&gt;strStartsAll( ['a', 'c'] ); // false Map::from( ['abc', 'cab'] )-&gt;strStartsAll( 'ab', 'ASCII' ); // false"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">def</span>'</span>] )-&gt;<span class="pl-en">strStartsAll</span>( <span class="pl-s">''</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">acb</span>'</span>] )-&gt;<span class="pl-en">strStartsAll</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">aba</span>'</span>] )-&gt;<span class="pl-en">strStartsAll</span>( <span class="pl-s">'<span class="pl-s">ab</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">def</span>'</span>] )-&gt;<span class="pl-en">strStartsAll</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">d</span>'</span>] ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">acf</span>'</span>] )-&gt;<span class="pl-en">strStartsAll</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">ASCII</span>'</span> ); <span class="pl-c">// true</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">def</span>'</span>] )-&gt;<span class="pl-en">strStartsAll</span>( <span class="pl-s">'<span class="pl-s">d</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">bca</span>'</span>] )-&gt;<span class="pl-en">strStartsAll</span>( <span class="pl-s">'<span class="pl-s">ab</span>'</span> ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">bac</span>'</span>] )-&gt;<span class="pl-en">strStartsAll</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] ); <span class="pl-c">// false</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">cab</span>'</span>] )-&gt;<span class="pl-en">strStartsAll</span>( <span class="pl-s">'<span class="pl-s">ab</span>'</span>, <span class="pl-s">'<span class="pl-s">ASCII</span>'</span> ); <span class="pl-c">// false</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#strstarts">strStarts()</a> - Tests if at least one of the entries starts with at least one of the passed strings</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">strUpper()</h3><a id="user-content-strupper" class="anchor" aria-label="Permalink: strUpper()" href="#strupper"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Converts all alphabetic characters in strings to upper case.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function strUpper( string $encoding = 'UTF-8' ) :self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> strUpper( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>encoding</span> = <span class="pl-s">'<span class="pl-s">UTF-8</span>'</span> ) :<span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$encoding</code> Character encoding of the strings, e.g. "UTF-8" (default), "ASCII", "ISO-8859-1", etc.</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['My String'] )-&gt;strUpper(); // [&quot;MY STRING&quot;] Map::from( ['τάχιστη'] )-&gt;strUpper(); // [&quot;ΤΆΧΙΣΤΗ&quot;] Map::from( ['äpfel', 'birnen'] )-&gt;strUpper( 'ISO-8859-1' ); // [&quot;ÄPFEL&quot;, &quot;BIRNEN&quot;]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">My String</span>'</span>] )-&gt;<span class="pl-en">strUpper</span>(); <span class="pl-c">// ["MY STRING"]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">τάχιστη</span>'</span>] )-&gt;<span class="pl-en">strUpper</span>(); <span class="pl-c">// ["ΤΆΧΙΣΤΗ"]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">äpfel</span>'</span>, <span class="pl-s">'<span class="pl-s">birnen</span>'</span>] )-&gt;<span class="pl-en">strUpper</span>( <span class="pl-s">'<span class="pl-s">ISO-8859-1</span>'</span> ); <span class="pl-c">// ["ÄPFEL", "BIRNEN"]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#strlower">strLower()</a> - Converts all alphabetic characters in strings to lower case</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">suffix</h3><a id="user-content-suffix" class="anchor" aria-label="Permalink: suffix" href="#suffix"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Adds a suffix at the end of each map entry.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function suffix( $suffix, int $depth = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> suffix( <span class="pl-s1"><span class="pl-c1">$</span>suffix</span>, <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>depth</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|string</strong> <code>$suffix</code> Function with map as parameter which returns arbitrary result</li> <li>@param <strong>int|null</strong> <code>$depth</code> Maximum depth to dive into multi-dimensional arrays starting from "1"</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">By defaul, nested arrays are walked recusively so all entries at all levels are suffixed. The keys are preserved using this method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;suffix( '-1' ); // ['a-1', 'b-1'] Map::from( ['a', ['b']] )-&gt;suffix( '-1' ); // ['a-1', ['b-1']] Map::from( ['a', ['b']] )-&gt;suffix( '-1', 1 ); // ['a-1', ['b']] Map::from( ['a', 'b'] )-&gt;suffix( function( $item, $key ) { return '-' . ( ord( $item ) + ord( $key ) ); } ); // ['a-145', 'b-147']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">suffix</span>( <span class="pl-s">'<span class="pl-s">-1</span>'</span> ); <span class="pl-c">// ['a-1', 'b-1']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, [<span class="pl-s">'<span class="pl-s">b</span>'</span>]] )-&gt;<span class="pl-en">suffix</span>( <span class="pl-s">'<span class="pl-s">-1</span>'</span> ); <span class="pl-c">// ['a-1', ['b-1']]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, [<span class="pl-s">'<span class="pl-s">b</span>'</span>]] )-&gt;<span class="pl-en">suffix</span>( <span class="pl-s">'<span class="pl-s">-1</span>'</span>, <span class="pl-c1">1</span> ); <span class="pl-c">// ['a-1', ['b']]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">suffix</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s">'<span class="pl-s">-</span>'</span> . ( <span class="pl-en">ord</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span> ) + <span class="pl-en">ord</span>( <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) ); } ); <span class="pl-c">// ['a-145', 'b-147']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#prefix">prefix()</a> - Adds a prefix in front of each map entry</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">sum()</h3><a id="user-content-sum" class="anchor" aria-label="Permalink: sum()" href="#sum"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the sum of all integer and float values in the map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function sum( $col = null ) : float"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> sum( <span class="pl-s1"><span class="pl-c1">$</span>col</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi">float</span></pre></div> <ul dir="auto"> <li>@param <strong>Closure|string|null</strong> <code>$col</code> Closure, key in the nested array or object to sum up</li> <li>@return <strong>float</strong> Sum of all elements or 0 if there are no elements in the map</li> </ul> <p dir="auto">Non-numeric values will be removed before calculation.</p> <p dir="auto">This does also work to map values from multi-dimensional arrays by passing the keys of the arrays separated by the delimiter ("/" by default), e.g. <code>key1/key2/key3</code> to get <code>val</code> from <code>['key1' =&gt; ['key2' =&gt; ['key3' =&gt; 'val']]]</code>. The same applies to public properties of objects or objects implementing <code>__isset()</code> and <code>__get()</code> methods.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [1, 3, 5] )-&gt;sum(); // 9 Map::from( [1, 'sum', 5] )-&gt;sum(); // 6 Map::from( [['p' =&gt; 30], ['p' =&gt; 50], ['p' =&gt; 10]] )-&gt;sum( 'p' ); // 90 Map::from( [['i' =&gt; ['p' =&gt; 30]], ['i' =&gt; ['p' =&gt; 50]]] )-&gt;sum( 'i/p' ); // 80 Map::from( [['i' =&gt; ['p' =&gt; 30]], ['i' =&gt; ['p' =&gt; 50]]] )-&gt;sum( fn( $val, $key ) =&gt; $val['i']['p'] ?? null ) // 80 Map::from( [30, 50, 10] )-&gt;sum( fn( $val, $key ) =&gt; $val &lt; 50 ); // 40"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">3</span>, <span class="pl-c1">5</span>] )-&gt;<span class="pl-en">sum</span>(); <span class="pl-c">// 9</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">sum</span>'</span>, <span class="pl-c1">5</span>] )-&gt;<span class="pl-en">sum</span>(); <span class="pl-c">// 6</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">30</span>], [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">50</span>], [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">10</span>]] )-&gt;<span class="pl-en">sum</span>( <span class="pl-s">'<span class="pl-s">p</span>'</span> ); <span class="pl-c">// 90</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">30</span>]], [<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">50</span>]]] )-&gt;<span class="pl-en">sum</span>( <span class="pl-s">'<span class="pl-s">i/p</span>'</span> ); <span class="pl-c">// 80</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">30</span>]], [<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">50</span>]]] )-&gt;<span class="pl-en">sum</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>val</span>[<span class="pl-s">'<span class="pl-s">i</span>'</span>][<span class="pl-s">'<span class="pl-s">p</span>'</span>] ?? <span class="pl-c1">null</span> ) <span class="pl-c">// 80</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">30</span>, <span class="pl-c1">50</span>, <span class="pl-c1">10</span>] )-&gt;<span class="pl-en">sum</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>val</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>val</span> &lt; <span class="pl-c1">50</span> ); <span class="pl-c">// 40</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#avg">avg()</a> - Returns the average of all integer and float values in the map</li> <li><a href="#count">count()</a> - Returns the total number of elements</li> <li><a href="#max">max()</a> - Returns the maximum value of all elements</li> <li><a href="#min">min()</a> - Returns the minium value of all elements</li> <li><a href="#percentage">percentage()</a> - Returns the percentage of all elements passing the test</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">take()</h3><a id="user-content-take" class="anchor" aria-label="Permalink: take()" href="#take"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns a new map with the given number of items.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function take( int $size, $offset = 0 ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> take( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>size</span>, <span class="pl-s1"><span class="pl-c1">$</span>offset</span> = <span class="pl-c1">0</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$size</code> Number of items to return</li> <li>@param <strong>\Closure|int</strong> <code>$offset</code> Number of items to skip or function($item, $key) returning true for skipped items</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The keys of the items returned in the new map are the same as in the original one.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [1, 2, 3, 4] )-&gt;take( 2 ); // [0 =&gt; 1, 1 =&gt; 2] Map::from( [1, 2, 3, 4] )-&gt;take( 2, 1 ); // [1 =&gt; 2, 2 =&gt; 3] Map::from( [1, 2, 3, 4] )-&gt;take( 2, -2 ); // [2 =&gt; 3, 3 =&gt; 4] Map::from( [1, 2, 3, 4] )-&gt;take( 2, function( $item, $key ) { return $item &lt; 2; } ); // [1 =&gt; 2, 2 =&gt; 3]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>, <span class="pl-c1">4</span>] )-&gt;<span class="pl-en">take</span>( <span class="pl-c1">2</span> ); <span class="pl-c">// [0 =&gt; 1, 1 =&gt; 2]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>, <span class="pl-c1">4</span>] )-&gt;<span class="pl-en">take</span>( <span class="pl-c1">2</span>, <span class="pl-c1">1</span> ); <span class="pl-c">// [1 =&gt; 2, 2 =&gt; 3]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>, <span class="pl-c1">4</span>] )-&gt;<span class="pl-en">take</span>( <span class="pl-c1">2</span>, -<span class="pl-c1">2</span> ); <span class="pl-c">// [2 =&gt; 3, 3 =&gt; 4]</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>, <span class="pl-c1">4</span>] )-&gt;<span class="pl-en">take</span>( <span class="pl-c1">2</span>, <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>item</span> &lt; <span class="pl-c1">2</span>; } ); <span class="pl-c">// [1 =&gt; 2, 2 =&gt; 3]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#slice">slice()</a> - Returns a map with the slice from the original map.</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">tap()</h3><a id="user-content-tap" class="anchor" aria-label="Permalink: tap()" href="#tap"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Passes a clone of the map to the given callback.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function tap( callable $callback ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> tap( <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>callable</strong> <code>$callback</code> Function receiving ($map) parameter</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Same map for fluid interface</li> </ul> <p dir="auto">Use it to "tap" into a chain of methods to check the state between two method calls. The original map is not altered by anything done in the callback.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [3, 2, 1] )-&gt;rsort()-&gt;tap( function( $map ) { print_r( $map-&gt;remove( 0 )-&gt;toArray() ); } )-&gt;first(); // 1"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">3</span>, <span class="pl-c1">2</span>, <span class="pl-c1">1</span>] )-&gt;<span class="pl-en">rsort</span>()-&gt;<span class="pl-en">tap</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span> ) { <span class="pl-en">print_r</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">remove</span>( <span class="pl-c1">0</span> )-&gt;<span class="pl-en">toArray</span>() ); } )-&gt;<span class="pl-en">first</span>(); <span class="pl-c">// 1</span></pre></div> <p dir="auto">It will sort the list in reverse order(<code>[1, 2, 3]</code>), then prints the items (<code>[2, 3]</code>) without the first one in the function passed to <code>tap()</code> and returns the first item ("1") at the end.</p> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">times()</h3><a id="user-content-times" class="anchor" aria-label="Permalink: times()" href="#times"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Creates a new map by invoking the closure the given number of times.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public static function times( int $num, \Closure $callback ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">static</span> <span class="pl-k">function</span> times( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>num</span>, <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$num</code> Number of times the function is called</li> <li>@param <strong>\Closure</strong> <code>$callback</code> Function with (value, key) parameters and returns new value</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with the generated elements</li> </ul> <p dir="auto">This method creates a lazy Map and the entries are generated after calling another method that operates on the Map contents. Thus, the passed callback is not called immediately!</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::times( 3, function( $num ) { return $num * 10; } ); // [0 =&gt; 0, 1 =&gt; 10, 2 =&gt; 20] Map::times( 3, function( $num, &amp;$key ) { $key = $num * 2; return $num * 5; } ); // [0 =&gt; 0, 2 =&gt; 5, 4 =&gt; 10] Map::times( 2, function( $num ) { return new \stdClass(); } ); // [0 =&gt; new \stdClass(), 1 =&gt; new \stdClass()]"><pre>Map::<span class="pl-en">times</span>( <span class="pl-c1">3</span>, <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>num</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>num</span> * <span class="pl-c1">10</span>; } ); <span class="pl-c">// [0 =&gt; 0, 1 =&gt; 10, 2 =&gt; 20]</span> Map::<span class="pl-en">times</span>( <span class="pl-c1">3</span>, <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>num</span>, &amp;<span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-s1"><span class="pl-c1">$</span>key</span> = <span class="pl-s1"><span class="pl-c1">$</span>num</span> * <span class="pl-c1">2</span>; <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>num</span> * <span class="pl-c1">5</span>; } ); <span class="pl-c">// [0 =&gt; 0, 2 =&gt; 5, 4 =&gt; 10]</span> Map::<span class="pl-en">times</span>( <span class="pl-c1">2</span>, <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>num</span> ) { <span class="pl-k">return</span> <span class="pl-k">new</span> \<span class="pl-v">stdClass</span>(); } ); <span class="pl-c">// [0 =&gt; new \stdClass(), 1 =&gt; new \stdClass()]</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">to()</h3><a id="user-content-to" class="anchor" aria-label="Permalink: to()" href="#to"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the elements as a plain array.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function to() : array"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> to() : <span class="pl-smi">array</span></pre></div> <ul dir="auto"> <li>@return <strong>array</strong> Plain array</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a'] )-&gt;to(); // ['a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">to</span>(); <span class="pl-c">// ['a']</span></pre></div> <p dir="auto">This is the preferred method for retrieving the plain array of the Map object.</p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#all">all()</a> - Returns the elements as a plain array</li> <li><a href="#toarray">toArray()</a> - Returns the elements as a plain array</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">toArray()</h3><a id="user-content-toarray" class="anchor" aria-label="Permalink: toArray()" href="#toarray"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the elements as a plain array.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function toArray() : array"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> toArray() : <span class="pl-smi">array</span></pre></div> <ul dir="auto"> <li>@return <strong>array</strong> Plain array</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a'] )-&gt;toArray(); // ['a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">toArray</span>(); <span class="pl-c">// ['a']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#all">all()</a> - Returns the elements as a plain array</li> <li><a href="#to">to()</a> - Returns the elements as a plain array</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">toJson()</h3><a id="user-content-tojson" class="anchor" aria-label="Permalink: toJson()" href="#tojson"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns the elements encoded as JSON string.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function toJson( int $options = 0 ) : ?string"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> toJson( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">0</span> ) : ?<span class="pl-smi">string</span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Combination of JSON_* constants</li> <li>@return <strong>string|null</strong> Array encoded as JSON string or NULL on failure</li> </ul> <p dir="auto">There are several options available to modify the JSON string which are described in the <a href="https://www.php.net/manual/en/function.json-encode.php" rel="nofollow">PHP json_encode() manual</a>. The parameter can be a single JSON_* constant or a bitmask of several constants combine by bitwise OR (|), e.g.:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="JSON_FORCE_OBJECT|JSON_HEX_QUOT"><pre><span class="pl-c1">JSON_FORCE_OBJECT</span>|<span class="pl-c1">JSON_HEX_QUOT</span></pre></div> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;toJson(); // '[&quot;a&quot;,&quot;b&quot;]' Map::from( ['a' =&gt; 'b'] )-&gt;toJson(); // '{&quot;a&quot;:&quot;b&quot;}' Map::from( ['a', 'b'] )-&gt;toJson( JSON_FORCE_OBJECT ); // '{&quot;0&quot;:&quot;a&quot;, &quot;1&quot;:&quot;b&quot;}'"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">toJson</span>(); <span class="pl-c">// '["a","b"]'</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">toJson</span>(); <span class="pl-c">// '{"a":"b"}'</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">toJson</span>( <span class="pl-c1">JSON_FORCE_OBJECT</span> ); <span class="pl-c">// '{"0":"a", "1":"b"}'</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">toReversed()</h3><a id="user-content-toreversed" class="anchor" aria-label="Permalink: toReversed()" href="#toreversed"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Reverses the element order in a copy of the map (alias).</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function toReversed() : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> toReversed() : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with a reversed copy of the elements</li> </ul> <p dir="auto">This method is an alias for <a href="#reversed">reversed()</a>. For performance reasons, reversed() should be preferred because it uses one method call less than toReversed().</p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#reversed">reversed()</a> - Underlying method with same parameters and return value but better performance</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">toSorted()</h3><a id="user-content-tosorted" class="anchor" aria-label="Permalink: toSorted()" href="#tosorted"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts the elements in a copy of the map using new keys (alias).</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function toSorted( int $options = SORT_REGULAR ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> toSorted( <span class="pl-smi">int</span> <span class="pl-s1"><span class="pl-c1">$</span>options</span> = <span class="pl-c1">SORT_REGULAR</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int</strong> <code>$options</code> Sort options for PHP <code>sort()</code></li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with a sorted copy of the elements</li> </ul> <p dir="auto">This method is an alias for <a href="#sorted">sorted()</a>. For performance reasons, sorted() should be preferred because it uses one method call less than toSorted(). A new map is created by calling this method.</p> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#sorted">sorted()</a> - Underlying method with same parameters and return value but better performance</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">toUrl()</h3><a id="user-content-tourl" class="anchor" aria-label="Permalink: toUrl()" href="#tourl"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Creates a HTTP query string from the map elements.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function toUrl() : string"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> toUrl() : <span class="pl-smi">string</span></pre></div> <ul dir="auto"> <li>@return <strong>string</strong> Parameter string for GET requests</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 1, 'b' =&gt; 2] )-&gt;toUrl(); // a=1&amp;b=2 Map::from( ['a' =&gt; ['b' =&gt; 'abc', 'c' =&gt; 'def'], 'd' =&gt; 123] )-&gt;toUrl(); // a%5Bb%5D=abc&amp;a%5Bc%5D=def&amp;d=123"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">2</span>] )-&gt;<span class="pl-en">toUrl</span>(); <span class="pl-c">// a=1&amp;b=2</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">abc</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">def</span>'</span>], <span class="pl-s">'<span class="pl-s">d</span>'</span> =&gt; <span class="pl-c1">123</span>] )-&gt;<span class="pl-en">toUrl</span>(); <span class="pl-c">// a%5Bb%5D=abc&amp;a%5Bc%5D=def&amp;d=123</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">transform()</h3><a id="user-content-transform" class="anchor" aria-label="Permalink: transform()" href="#transform"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Creates new key/value pairs using the passed function and returns a new map for the result.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function transform( \Closure $callback ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> transform( <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure</strong> <code>$callback</code> Function with (value, key) parameters and returns an array of new key/value pair(s)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with the new key/value pairs</li> </ul> <p dir="auto">If a key is returned twice, the last value will overwrite previous values.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 2, 'b' =&gt; 4] )-&gt;transform( function( $value, $key ) { return [$key . '-2' =&gt; $value * 2]; } ); // ['a-2' =&gt; 4, 'b-2' =&gt; 8] Map::from( ['a' =&gt; 2, 'b' =&gt; 4] )-&gt;transform( function( $value, $key ) { return [$key =&gt; $value * 2, $key . $key =&gt; $value * 4]; } ); // ['a' =&gt; 4, 'aa' =&gt; 8, 'b' =&gt; 8, 'bb' =&gt; 16] Map::from( ['a' =&gt; 2, 'b' =&gt; 4] )-&gt;transform( function( $value, $key ) { return $key &lt; 'b' ? [$key =&gt; $value * 2] : null; } ); // ['a' =&gt; 4] Map::from( ['la' =&gt; 2, 'le' =&gt; 4, 'li' =&gt; 6] )-&gt;transform( function( $value, $key ) { return [$key[0] =&gt; $value * 2]; } ); // ['l' =&gt; 12]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">4</span>] )-&gt;<span class="pl-en">transform</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> [<span class="pl-s1"><span class="pl-c1">$</span>key</span> . <span class="pl-s">'<span class="pl-s">-2</span>'</span> =&gt; <span class="pl-s1"><span class="pl-c1">$</span>value</span> * <span class="pl-c1">2</span>]; } ); <span class="pl-c">// ['a-2' =&gt; 4, 'b-2' =&gt; 8]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">4</span>] )-&gt;<span class="pl-en">transform</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> [<span class="pl-s1"><span class="pl-c1">$</span>key</span> =&gt; <span class="pl-s1"><span class="pl-c1">$</span>value</span> * <span class="pl-c1">2</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> . <span class="pl-s1"><span class="pl-c1">$</span>key</span> =&gt; <span class="pl-s1"><span class="pl-c1">$</span>value</span> * <span class="pl-c1">4</span>]; } ); <span class="pl-c">// ['a' =&gt; 4, 'aa' =&gt; 8, 'b' =&gt; 8, 'bb' =&gt; 16]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">4</span>] )-&gt;<span class="pl-en">transform</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>key</span> &lt; <span class="pl-s">'<span class="pl-s">b</span>'</span> ? [<span class="pl-s1"><span class="pl-c1">$</span>key</span> =&gt; <span class="pl-s1"><span class="pl-c1">$</span>value</span> * <span class="pl-c1">2</span>] : <span class="pl-c1">null</span>; } ); <span class="pl-c">// ['a' =&gt; 4]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">la</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">le</span>'</span> =&gt; <span class="pl-c1">4</span>, <span class="pl-s">'<span class="pl-s">li</span>'</span> =&gt; <span class="pl-c1">6</span>] )-&gt;<span class="pl-en">transform</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> [<span class="pl-s1"><span class="pl-c1">$</span>key</span>[<span class="pl-c1">0</span>] =&gt; <span class="pl-s1"><span class="pl-c1">$</span>value</span> * <span class="pl-c1">2</span>]; } ); <span class="pl-c">// ['l' =&gt; 12]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#map">map()</a> - Maps new values to the existing keys using the passed function and returns a new map for the result</li> <li><a href="#rekey">rekey()</a> - Changes the keys according to the passed function</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">transpose()</h3><a id="user-content-transpose" class="anchor" aria-label="Permalink: transpose()" href="#transpose"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Exchanges rows and columns for a two dimensional map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function transpose() : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> transpose() : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [ ['name' =&gt; 'A', 2020 =&gt; 200, 2021 =&gt; 100, 2022 =&gt; 50], ['name' =&gt; 'B', 2020 =&gt; 300, 2021 =&gt; 200, 2022 =&gt; 100], ['name' =&gt; 'C', 2020 =&gt; 400, 2021 =&gt; 300, 2022 =&gt; 200], ] )-&gt;transpose(); /* [ 'name' =&gt; ['A', 'B', 'C'], 2020 =&gt; [200, 300, 400], 2021 =&gt; [100, 200, 300], 2022 =&gt; [50, 100, 200] ] */ Map::from( [ ['name' =&gt; 'A', 2020 =&gt; 200, 2021 =&gt; 100, 2022 =&gt; 50], ['name' =&gt; 'B', 2020 =&gt; 300, 2021 =&gt; 200], ['name' =&gt; 'C', 2020 =&gt; 400] ] ); /* [ 'name' =&gt; ['A', 'B', 'C'], 2020 =&gt; [200, 300, 400], 2021 =&gt; [100, 200], 2022 =&gt; [50] ] */"><pre>Map::<span class="pl-en">from</span>( [ [<span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>, <span class="pl-c1">2020</span> =&gt; <span class="pl-c1">200</span>, <span class="pl-c1">2021</span> =&gt; <span class="pl-c1">100</span>, <span class="pl-c1">2022</span> =&gt; <span class="pl-c1">50</span>], [<span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">B</span>'</span>, <span class="pl-c1">2020</span> =&gt; <span class="pl-c1">300</span>, <span class="pl-c1">2021</span> =&gt; <span class="pl-c1">200</span>, <span class="pl-c1">2022</span> =&gt; <span class="pl-c1">100</span>], [<span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">C</span>'</span>, <span class="pl-c1">2020</span> =&gt; <span class="pl-c1">400</span>, <span class="pl-c1">2021</span> =&gt; <span class="pl-c1">300</span>, <span class="pl-c1">2022</span> =&gt; <span class="pl-c1">200</span>], ] )-&gt;<span class="pl-en">transpose</span>(); <span class="pl-c">/*</span> <span class="pl-c">[</span> <span class="pl-c"> 'name' =&gt; ['A', 'B', 'C'],</span> <span class="pl-c"> 2020 =&gt; [200, 300, 400],</span> <span class="pl-c"> 2021 =&gt; [100, 200, 300],</span> <span class="pl-c"> 2022 =&gt; [50, 100, 200]</span> <span class="pl-c">]</span> <span class="pl-c">*/</span> Map::<span class="pl-en">from</span>( [ [<span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">A</span>'</span>, <span class="pl-c1">2020</span> =&gt; <span class="pl-c1">200</span>, <span class="pl-c1">2021</span> =&gt; <span class="pl-c1">100</span>, <span class="pl-c1">2022</span> =&gt; <span class="pl-c1">50</span>], [<span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">B</span>'</span>, <span class="pl-c1">2020</span> =&gt; <span class="pl-c1">300</span>, <span class="pl-c1">2021</span> =&gt; <span class="pl-c1">200</span>], [<span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">C</span>'</span>, <span class="pl-c1">2020</span> =&gt; <span class="pl-c1">400</span>] ] ); <span class="pl-c">/*</span> <span class="pl-c">[</span> <span class="pl-c"> 'name' =&gt; ['A', 'B', 'C'],</span> <span class="pl-c"> 2020 =&gt; [200, 300, 400],</span> <span class="pl-c"> 2021 =&gt; [100, 200],</span> <span class="pl-c"> 2022 =&gt; [50]</span> <span class="pl-c">]</span> <span class="pl-c">*/</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">traverse()</h3><a id="user-content-traverse" class="anchor" aria-label="Permalink: traverse()" href="#traverse"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Traverses trees of nested items passing each item to the callback.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function traverse( \Closure $callback = null, string $nestKey = 'children' ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> traverse( <span class="pl-smi">\<span class="pl-smi">Closure</span></span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> = <span class="pl-c1">null</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>nestKey</span> = <span class="pl-s">'<span class="pl-s">children</span>'</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|null</strong> <code>$callback</code> Callback with (entry, key, level, $parent) arguments, returns the entry added to result</li> <li>@param <strong>string</strong> <code>$nestKey</code> Key to the children of each item</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with all items as flat list</li> </ul> <p dir="auto">This does work for nested arrays and objects with public properties or objects implementing <code>__isset()</code> and <code>__get()</code> methods. To build trees of nested items, use the <a href="#tree">tree()</a> method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [[ 'id' =&gt; 1, 'pid' =&gt; null, 'name' =&gt; 'n1', 'children' =&gt; [ ['id' =&gt; 2, 'pid' =&gt; 1, 'name' =&gt; 'n2', 'children' =&gt; []], ['id' =&gt; 3, 'pid' =&gt; 1, 'name' =&gt; 'n3', 'children' =&gt; []] ] ]] )-&gt;traverse(); /* [ ['id' =&gt; 1, 'pid' =&gt; null, 'name' =&gt; 'n1', 'children' =&gt; [...]], ['id' =&gt; 2, 'pid' =&gt; 1, 'name' =&gt; 'n2', 'children' =&gt; []], ['id' =&gt; 3, 'pid' =&gt; 1, 'name' =&gt; 'n3', 'children' =&gt; []], ] */ Map::from( [[ 'id' =&gt; 1, 'pid' =&gt; null, 'name' =&gt; 'n1', 'children' =&gt; [ ['id' =&gt; 2, 'pid' =&gt; 1, 'name' =&gt; 'n2', 'children' =&gt; []], ['id' =&gt; 3, 'pid' =&gt; 1, 'name' =&gt; 'n3', 'children' =&gt; []] ] ]] )-&gt;traverse( function( $entry, $key, $level ) { return str_repeat( '-', $level ) . '- ' . $entry['name']; } ); // ['- n1', '-- n2', '-- n3'] Map::from( [[ 'id' =&gt; 1, 'pid' =&gt; null, 'name' =&gt; 'n1', 'children' =&gt; [ ['id' =&gt; 2, 'pid' =&gt; 1, 'name' =&gt; 'n2', 'children' =&gt; []], ['id' =&gt; 3, 'pid' =&gt; 1, 'name' =&gt; 'n3', 'children' =&gt; []] ] ]] )-&gt;traverse( function( &amp;$entry, $key, $level, $parent ) { $entry['path'] = isset( $parent['path'] ) ? $parent['path'] . '/' . $entry['name'] : $entry['name']; return $entry; } ); /* [ ['id' =&gt; 1, 'pid' =&gt; null, 'name' =&gt; 'n1', 'children' =&gt; [...], 'path' =&gt; 'n1'], ['id' =&gt; 2, 'pid' =&gt; 1, 'name' =&gt; 'n2', 'children' =&gt; [], 'path' =&gt; 'n1/n2'], ['id' =&gt; 3, 'pid' =&gt; 1, 'name' =&gt; 'n3', 'children' =&gt; [], 'path' =&gt; 'n1/n3'], ] */ Map::from( [[ 'id' =&gt; 1, 'pid' =&gt; null, 'name' =&gt; 'n1', 'nodes' =&gt; [ ['id' =&gt; 2, 'pid' =&gt; 1, 'name' =&gt; 'n2', 'nodes' =&gt; []] ] ]] )-&gt;traverse( null, 'nodes' ); /* [ ['id' =&gt; 1, 'pid' =&gt; null, 'name' =&gt; 'n1', 'nodes' =&gt; [...]], ['id' =&gt; 2, 'pid' =&gt; 1, 'name' =&gt; 'n2', 'nodes' =&gt; []], ] */"><pre>Map::<span class="pl-en">from</span>( [[ <span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">null</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n1</span>'</span>, <span class="pl-s">'<span class="pl-s">children</span>'</span> =&gt; [ [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n2</span>'</span>, <span class="pl-s">'<span class="pl-s">children</span>'</span> =&gt; []], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n3</span>'</span>, <span class="pl-s">'<span class="pl-s">children</span>'</span> =&gt; []] ] ]] )-&gt;<span class="pl-en">traverse</span>(); <span class="pl-c">/*</span> <span class="pl-c">[</span> <span class="pl-c"> ['id' =&gt; 1, 'pid' =&gt; null, 'name' =&gt; 'n1', 'children' =&gt; [...]],</span> <span class="pl-c"> ['id' =&gt; 2, 'pid' =&gt; 1, 'name' =&gt; 'n2', 'children' =&gt; []],</span> <span class="pl-c"> ['id' =&gt; 3, 'pid' =&gt; 1, 'name' =&gt; 'n3', 'children' =&gt; []],</span> <span class="pl-c">]</span> <span class="pl-c">*/</span> Map::<span class="pl-en">from</span>( [[ <span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">null</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n1</span>'</span>, <span class="pl-s">'<span class="pl-s">children</span>'</span> =&gt; [ [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n2</span>'</span>, <span class="pl-s">'<span class="pl-s">children</span>'</span> =&gt; []], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n3</span>'</span>, <span class="pl-s">'<span class="pl-s">children</span>'</span> =&gt; []] ] ]] )-&gt;<span class="pl-en">traverse</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>entry</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-s1"><span class="pl-c1">$</span>level</span> ) { <span class="pl-k">return</span> <span class="pl-en">str_repeat</span>( <span class="pl-s">'<span class="pl-s">-</span>'</span>, <span class="pl-s1"><span class="pl-c1">$</span>level</span> ) . <span class="pl-s">'<span class="pl-s">- </span>'</span> . <span class="pl-s1"><span class="pl-c1">$</span>entry</span>[<span class="pl-s">'<span class="pl-s">name</span>'</span>]; } ); <span class="pl-c">// ['- n1', '-- n2', '-- n3']</span> Map::<span class="pl-en">from</span>( [[ <span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">null</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n1</span>'</span>, <span class="pl-s">'<span class="pl-s">children</span>'</span> =&gt; [ [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n2</span>'</span>, <span class="pl-s">'<span class="pl-s">children</span>'</span> =&gt; []], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n3</span>'</span>, <span class="pl-s">'<span class="pl-s">children</span>'</span> =&gt; []] ] ]] )-&gt;<span class="pl-en">traverse</span>( <span class="pl-k">function</span>( &amp;<span class="pl-s1"><span class="pl-c1">$</span>entry</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-s1"><span class="pl-c1">$</span>level</span>, <span class="pl-s1"><span class="pl-c1">$</span>parent</span> ) { <span class="pl-s1"><span class="pl-c1">$</span>entry</span>[<span class="pl-s">'<span class="pl-s">path</span>'</span>] = <span class="pl-en">isset</span>( <span class="pl-s1"><span class="pl-c1">$</span>parent</span>[<span class="pl-s">'<span class="pl-s">path</span>'</span>] ) ? <span class="pl-s1"><span class="pl-c1">$</span>parent</span>[<span class="pl-s">'<span class="pl-s">path</span>'</span>] . <span class="pl-s">'<span class="pl-s">/</span>'</span> . <span class="pl-s1"><span class="pl-c1">$</span>entry</span>[<span class="pl-s">'<span class="pl-s">name</span>'</span>] : <span class="pl-s1"><span class="pl-c1">$</span>entry</span>[<span class="pl-s">'<span class="pl-s">name</span>'</span>]; <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>entry</span>; } ); <span class="pl-c">/*</span> <span class="pl-c">[</span> <span class="pl-c"> ['id' =&gt; 1, 'pid' =&gt; null, 'name' =&gt; 'n1', 'children' =&gt; [...], 'path' =&gt; 'n1'],</span> <span class="pl-c"> ['id' =&gt; 2, 'pid' =&gt; 1, 'name' =&gt; 'n2', 'children' =&gt; [], 'path' =&gt; 'n1/n2'],</span> <span class="pl-c"> ['id' =&gt; 3, 'pid' =&gt; 1, 'name' =&gt; 'n3', 'children' =&gt; [], 'path' =&gt; 'n1/n3'],</span> <span class="pl-c">]</span> <span class="pl-c">*/</span> Map::<span class="pl-en">from</span>( [[ <span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">null</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n1</span>'</span>, <span class="pl-s">'<span class="pl-s">nodes</span>'</span> =&gt; [ [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n2</span>'</span>, <span class="pl-s">'<span class="pl-s">nodes</span>'</span> =&gt; []] ] ]] )-&gt;<span class="pl-en">traverse</span>( <span class="pl-c1">null</span>, <span class="pl-s">'<span class="pl-s">nodes</span>'</span> ); <span class="pl-c">/*</span> <span class="pl-c">[</span> <span class="pl-c"> ['id' =&gt; 1, 'pid' =&gt; null, 'name' =&gt; 'n1', 'nodes' =&gt; [...]],</span> <span class="pl-c"> ['id' =&gt; 2, 'pid' =&gt; 1, 'name' =&gt; 'n2', 'nodes' =&gt; []],</span> <span class="pl-c">]</span> <span class="pl-c">*/</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#tree">tree()</a> - Creates a tree structure from the list items</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">tree()</h3><a id="user-content-tree" class="anchor" aria-label="Permalink: tree()" href="#tree"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Creates a tree structure from the list items.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function tree( string $idKey, string $parentKey, string $nestKey = 'children' ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> tree( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>idKey</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>parentKey</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>nestKey</span> = <span class="pl-s">'<span class="pl-s">children</span>'</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$idKey</code> Name of the key with the unique ID of the node</li> <li>@param <strong>string</strong> <code>$parentKey</code> Name of the key with the ID of the parent node</li> <li>@param <strong>string</strong> <code>$nestKey</code> Name of the key with will contain the children of the node</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map with one or more root tree nodes</li> </ul> <p dir="auto">Use this method to rebuild trees e.g. from database records. To traverse trees, use the <a href="#traverse">traverse()</a> method.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [ ['id' =&gt; 1, 'pid' =&gt; null, 'lvl' =&gt; 0, 'name' =&gt; 'n1'], ['id' =&gt; 2, 'pid' =&gt; 1, 'lvl' =&gt; 1, 'name' =&gt; 'n2'], ['id' =&gt; 3, 'pid' =&gt; 2, 'lvl' =&gt; 2, 'name' =&gt; 'n3'], ['id' =&gt; 4, 'pid' =&gt; 1, 'lvl' =&gt; 1, 'name' =&gt; 'n4'], ['id' =&gt; 5, 'pid' =&gt; 3, 'lvl' =&gt; 2, 'name' =&gt; 'n5'], ['id' =&gt; 6, 'pid' =&gt; 1, 'lvl' =&gt; 1, 'name' =&gt; 'n6'], ] )-&gt;tree( 'id', 'pid' ); /* [1 =&gt; [ 'id' =&gt; 1, 'pid' =&gt; null, 'lvl' =&gt; 0, 'name' =&gt; 'n1', 'children' =&gt; [ 2 =&gt; ['id' =&gt; 2, 'pid' =&gt; 1, 'lvl' =&gt; 1, 'name' =&gt; 'n2', 'children' =&gt; [ 3 =&gt; ['id' =&gt; 3, 'pid' =&gt; 2, 'lvl' =&gt; 2, 'name' =&gt; 'n3', 'children' =&gt; []] ]], 4 =&gt; ['id' =&gt; 4, 'pid' =&gt; 1, 'lvl' =&gt; 1, 'name' =&gt; 'n4', 'children' =&gt; [ 5 =&gt; ['id' =&gt; 5, 'pid' =&gt; 3, 'lvl' =&gt; 2, 'name' =&gt; 'n5', 'children' =&gt; []] ]], 6 =&gt; ['id' =&gt; 6, 'pid' =&gt; 1, 'lvl' =&gt; 1, 'name' =&gt; 'n6', 'children' =&gt; []] ] ]] */"><pre>Map::<span class="pl-en">from</span>( [ [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">null</span>, <span class="pl-s">'<span class="pl-s">lvl</span>'</span> =&gt; <span class="pl-c1">0</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n1</span>'</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">lvl</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n2</span>'</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">lvl</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n3</span>'</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">4</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">lvl</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n4</span>'</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">5</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">lvl</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n5</span>'</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">6</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">lvl</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">n6</span>'</span>], ] )-&gt;<span class="pl-en">tree</span>( <span class="pl-s">'<span class="pl-s">id</span>'</span>, <span class="pl-s">'<span class="pl-s">pid</span>'</span> ); <span class="pl-c">/*</span> <span class="pl-c">[1 =&gt; [</span> <span class="pl-c"> 'id' =&gt; 1, 'pid' =&gt; null, 'lvl' =&gt; 0, 'name' =&gt; 'n1', 'children' =&gt; [</span> <span class="pl-c"> 2 =&gt; ['id' =&gt; 2, 'pid' =&gt; 1, 'lvl' =&gt; 1, 'name' =&gt; 'n2', 'children' =&gt; [</span> <span class="pl-c"> 3 =&gt; ['id' =&gt; 3, 'pid' =&gt; 2, 'lvl' =&gt; 2, 'name' =&gt; 'n3', 'children' =&gt; []]</span> <span class="pl-c"> ]],</span> <span class="pl-c"> 4 =&gt; ['id' =&gt; 4, 'pid' =&gt; 1, 'lvl' =&gt; 1, 'name' =&gt; 'n4', 'children' =&gt; [</span> <span class="pl-c"> 5 =&gt; ['id' =&gt; 5, 'pid' =&gt; 3, 'lvl' =&gt; 2, 'name' =&gt; 'n5', 'children' =&gt; []]</span> <span class="pl-c"> ]],</span> <span class="pl-c"> 6 =&gt; ['id' =&gt; 6, 'pid' =&gt; 1, 'lvl' =&gt; 1, 'name' =&gt; 'n6', 'children' =&gt; []]</span> <span class="pl-c"> ]</span> <span class="pl-c">]]</span> <span class="pl-c">*/</span></pre></div> <p dir="auto">To build the tree correctly, the items must be in order or at least the nodes of the lower levels must come first. For a tree like this:</p> <div class="snippet-clipboard-content notranslate position-relative overflow-auto" data-snippet-clipboard-copy-content="n1 |- n2 | |- n3 |- n4 | |- n5 |- n6"><pre class="notranslate"><code>n1 |- n2 | |- n3 |- n4 | |- n5 |- n6 </code></pre></div> <p dir="auto">Accepted item order:</p> <ul dir="auto"> <li>in order: n1, n2, n3, n4, n5, n6</li> <li>lower levels first: n1, n2, n4, n6, n3, n5</li> </ul> <p dir="auto">If your items are unordered, apply <a href="#usort">usort()</a> first to the map entries, e.g.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [['id' =&gt; 3, 'lvl' =&gt; 2], ...] )-&gt;usort( function( $item1, $item2 ) { return $item1['lvl'] &lt;=&gt; $item2['lvl']; } );"><pre>Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">lvl</span>'</span> =&gt; <span class="pl-c1">2</span>], ...] )-&gt;<span class="pl-en">usort</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>item1</span>, <span class="pl-s1"><span class="pl-c1">$</span>item2</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>item1</span>[<span class="pl-s">'<span class="pl-s">lvl</span>'</span>] &lt;=&gt; <span class="pl-s1"><span class="pl-c1">$</span>item2</span>[<span class="pl-s">'<span class="pl-s">lvl</span>'</span>]; } );</pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#traverse">traverse()</a> - Traverses trees of nested items passing each item to the callback</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">trim()</h3><a id="user-content-trim" class="anchor" aria-label="Permalink: trim()" href="#trim"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Removes the passed characters from the left/right of all strings.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function trim( string $chars = &quot; \n\r\t\v\x00&quot; ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> trim( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>chars</span> = <span class="pl-s">"<span class="pl-s"> </span>\n\r\t\v\x00"</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$chars</code> List of characters to trim</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [&quot; abc\n&quot;, &quot;\tcde\r\n&quot;] )-&gt;trim(); // [&quot;abc&quot;, &quot;cde&quot;] Map::from( [&quot;a b c&quot;, &quot;cbax&quot;] )-&gt;trim( 'abc' ); // [&quot; b &quot;, &quot;x&quot;]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">"<span class="pl-s"> abc</span>\n"</span>, <span class="pl-s">"\t<span class="pl-s">cde</span>\r\n"</span>] )-&gt;<span class="pl-en">trim</span>(); <span class="pl-c">// ["abc", "cde"]</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">"<span class="pl-s">a b c</span>"</span>, <span class="pl-s">"<span class="pl-s">cbax</span>"</span>] )-&gt;<span class="pl-en">trim</span>( <span class="pl-s">'<span class="pl-s">abc</span>'</span> ); <span class="pl-c">// [" b ", "x"]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#ltrim">ltrim()</a> - Removes the passed characters from the left of all strings</li> <li><a href="#rtrim">rtrim()</a> - Removes the passed characters from the right of all strings</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">uasort()</h3><a id="user-content-uasort" class="anchor" aria-label="Permalink: uasort()" href="#uasort"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts all elements using a callback and maintains the key association.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function uasort( callable $callback ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> uasort( <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>callable</strong> <code>$callback</code> Function with (itemA, itemB) parameters and returns -1 (&lt;), 0 (=) and 1 (&gt;)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The given callback will be used to compare the values. The callback must accept two parameters (item A and B) and must return -1 if item A is smaller than item B, 0 if both are equal and 1 if item A is greater than item B. Both, a method name and an anonymous function can be passed.</p> <p dir="auto">The keys are preserved using this method and no new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'B', 'b' =&gt; 'a'] )-&gt;uasort( 'strcasecmp' ); // ['b' =&gt; 'a', 'a' =&gt; 'B'] Map::from( ['a' =&gt; 'B', 'b' =&gt; 'a'] )-&gt;uasort( function( $itemA, $itemB ) { return strtolower( $itemA ) &lt;=&gt; strtolower( $itemB ); } ); // ['b' =&gt; 'a', 'a' =&gt; 'B']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">B</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">uasort</span>( <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// ['b' =&gt; 'a', 'a' =&gt; 'B']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">B</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">uasort</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>itemA</span>, <span class="pl-s1"><span class="pl-c1">$</span>itemB</span> ) { <span class="pl-k">return</span> <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>itemA</span> ) &lt;=&gt; <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>itemB</span> ); } ); <span class="pl-c">// ['b' =&gt; 'a', 'a' =&gt; 'B']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#uasorted">uasorted()</a> - Sorts a copy of all elements using a callback and maintains the key association</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">uasorted()</h3><a id="user-content-uasorted" class="anchor" aria-label="Permalink: uasorted()" href="#uasorted"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts a copy of all elements using a callback and maintains the key association.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function uasorted( callable $callback ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> uasorted( <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>callable</strong> <code>$callback</code> Function with (itemA, itemB) parameters and returns -1 (&lt;), 0 (=) and 1 (&gt;)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The given callback will be used to compare the values. The callback must accept two parameters (item A and B) and must return -1 if item A is smaller than item B, 0 if both are equal and 1 if item A is greater than item B. Both, a method name and an anonymous function can be passed.</p> <p dir="auto">The keys are preserved using this method and a new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'B', 'b' =&gt; 'a'] )-&gt;uasorted( 'strcasecmp' ); // ['b' =&gt; 'a', 'a' =&gt; 'B'] Map::from( ['a' =&gt; 'B', 'b' =&gt; 'a'] )-&gt;uasorted( function( $itemA, $itemB ) { return strtolower( $itemA ) &lt;=&gt; strtolower( $itemB ); } ); // ['b' =&gt; 'a', 'a' =&gt; 'B']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">B</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">uasorted</span>( <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// ['b' =&gt; 'a', 'a' =&gt; 'B']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">B</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">uasorted</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>itemA</span>, <span class="pl-s1"><span class="pl-c1">$</span>itemB</span> ) { <span class="pl-k">return</span> <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>itemA</span> ) &lt;=&gt; <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>itemB</span> ); } ); <span class="pl-c">// ['b' =&gt; 'a', 'a' =&gt; 'B']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#uasort">uasort()</a> - Sorts all elements using a callback and maintains the key association</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">uksort()</h3><a id="user-content-uksort" class="anchor" aria-label="Permalink: uksort()" href="#uksort"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts the map elements by their keys using a callback.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function uksort( callable $callback ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> uksort( <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>callable</strong> <code>$callback</code> Function with (keyA, keyB) parameters and returns -1 (&lt;), 0 (=) and 1 (&gt;)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The given callback will be used to compare the keys. The callback must accept two parameters (key A and B) and must return -1 if key A is smaller than key B, 0 if both are equal and 1 if key A is greater than key B. Both, a method name and an anonymous function can be passed.</p> <p dir="auto">The keys are preserved using this method and no new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['B' =&gt; 'a', 'a' =&gt; 'b'] )-&gt;uksort( 'strcasecmp' ); // ['a' =&gt; 'b', 'B' =&gt; 'a'] Map::from( ['B' =&gt; 'a', 'a' =&gt; 'b'] )-&gt;uksort( function( $keyA, $keyB ) { return strtolower( $keyA ) &lt;=&gt; strtolower( $keyB ); } ); // ['a' =&gt; 'b', 'B' =&gt; 'a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">B</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">uksort</span>( <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// ['a' =&gt; 'b', 'B' =&gt; 'a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">B</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">uksort</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>keyA</span>, <span class="pl-s1"><span class="pl-c1">$</span>keyB</span> ) { <span class="pl-k">return</span> <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>keyA</span> ) &lt;=&gt; <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>keyB</span> ); } ); <span class="pl-c">// ['a' =&gt; 'b', 'B' =&gt; 'a']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#uksorted">uksorted()</a> - Sorts a copy of the map elements by their keys using a callback</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">uksorted()</h3><a id="user-content-uksorted" class="anchor" aria-label="Permalink: uksorted()" href="#uksorted"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts a copy of the map elements by their keys using a callback.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function uksorted( callable $callback ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> uksorted( <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>callable</strong> <code>$callback</code> Function with (keyA, keyB) parameters and returns -1 (&lt;), 0 (=) and 1 (&gt;)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The given callback will be used to compare the keys. The callback must accept two parameters (key A and B) and must return -1 if key A is smaller than key B, 0 if both are equal and 1 if key A is greater than key B. Both, a method name and an anonymous function can be passed.</p> <p dir="auto">The keys are preserved using this method and a new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['B' =&gt; 'a', 'a' =&gt; 'b'] )-&gt;uksorted( 'strcasecmp' ); // ['a' =&gt; 'b', 'B' =&gt; 'a'] Map::from( ['B' =&gt; 'a', 'a' =&gt; 'b'] )-&gt;uksorted( function( $keyA, $keyB ) { return strtolower( $keyA ) &lt;=&gt; strtolower( $keyB ); } ); // ['a' =&gt; 'b', 'B' =&gt; 'a']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">B</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">uksorted</span>( <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// ['a' =&gt; 'b', 'B' =&gt; 'a']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">B</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">uksorted</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>keyA</span>, <span class="pl-s1"><span class="pl-c1">$</span>keyB</span> ) { <span class="pl-k">return</span> <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>keyA</span> ) &lt;=&gt; <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>keyB</span> ); } ); <span class="pl-c">// ['a' =&gt; 'b', 'B' =&gt; 'a']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#uksort">uksort()</a> - Sorts the map elements by their keys using a callback</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">union()</h3><a id="user-content-union" class="anchor" aria-label="Permalink: union()" href="#union"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Builds a union of the elements and the given elements without returning a new map. Existing keys in the map will not be overwritten</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function union( iterable $elements ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> union( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>elements</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>iterable&lt;int|string,mixed&gt;</strong> <code>$elements</code> List of elements</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">If list entries should be overwritten, use <a href="#merge">merge()</a> instead. The keys are preserved using this method and no new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [0 =&gt; 'a', 1 =&gt; 'b'] )-&gt;union( [0 =&gt; 'c'] ); // [0 =&gt; 'a', 1 =&gt; 'b'] because the key 0 isn't overwritten Map::from( ['a' =&gt; 1, 'b' =&gt; 2] )-&gt;union( ['c' =&gt; 1] ); // ['a' =&gt; 1, 'b' =&gt; 2, 'c' =&gt; 1]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">union</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">c</span>'</span>] ); <span class="pl-c">// [0 =&gt; 'a', 1 =&gt; 'b'] because the key 0 isn't overwritten</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-c1">2</span>] )-&gt;<span class="pl-en">union</span>( [<span class="pl-s">'<span class="pl-s">c</span>'</span> =&gt; <span class="pl-c1">1</span>] ); <span class="pl-c">// ['a' =&gt; 1, 'b' =&gt; 2, 'c' =&gt; 1]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#combine">concat()</a> - Adds all elements with new keys</li> <li><a href="#merge">merge()</a> - Merges the map with the given elements without returning a new map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">unique()</h3><a id="user-content-unique" class="anchor" aria-label="Permalink: unique()" href="#unique"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns only unique elements from the map in a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function unique( $col = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> unique( <span class="pl-s1"><span class="pl-c1">$</span>col</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>\Closure|string|null</strong> <code>$col</code> Key, path of the nested array or anonymous function with ($item, $key) parameters returning the value for comparison</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">Two elements are considered equal if comparing their string representions returns TRUE:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="(string) $elem1 === (string) $elem2"><pre>(<span class="pl-smi">string</span>) <span class="pl-s1"><span class="pl-c1">$</span>elem1</span> === (<span class="pl-smi">string</span>) <span class="pl-s1"><span class="pl-c1">$</span>elem2</span></pre></div> <p dir="auto">The keys of the elements are preserved in the new map.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [0 =&gt; 'a', 1 =&gt; 'b', 2 =&gt; 'b', 3 =&gt; 'c'] )-&gt;unique(); // [0 =&gt; 'a', 1 =&gt; 'b', 3 =&gt; 'c'] Map::from( [['p' =&gt; '1'], ['p' =&gt; 1], ['p' =&gt; 2]] )-&gt;unique( 'p' ); // [0 =&gt; ['p' =&gt; '1'], 2 =&gt; ['p' =&gt; 2]] Map::from( [['i' =&gt; ['p' =&gt; '1']], ['i' =&gt; ['p' =&gt; 1]]] )-&gt;unique( 'i/p' ); // [0 =&gt; ['i' =&gt; ['p' =&gt; '1']]] Map::from( [['i' =&gt; ['p' =&gt; '1']], ['i' =&gt; ['p' =&gt; 1]]] )-&gt;unique( fn( $item, $key ) =&gt; $item['i']['p'] ); // [0 =&gt; ['i' =&gt; ['p' =&gt; '1']]]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">0</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">3</span> =&gt; <span class="pl-s">'<span class="pl-s">c</span>'</span>] )-&gt;<span class="pl-en">unique</span>(); <span class="pl-c">// [0 =&gt; 'a', 1 =&gt; 'b', 3 =&gt; 'c']</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">1</span>'</span>], [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">1</span>], [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">2</span>]] )-&gt;<span class="pl-en">unique</span>( <span class="pl-s">'<span class="pl-s">p</span>'</span> ); <span class="pl-c">// [0 =&gt; ['p' =&gt; '1'], 2 =&gt; ['p' =&gt; 2]]</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">1</span>'</span>]], [<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">1</span>]]] )-&gt;<span class="pl-en">unique</span>( <span class="pl-s">'<span class="pl-s">i/p</span>'</span> ); <span class="pl-c">// [0 =&gt; ['i' =&gt; ['p' =&gt; '1']]]</span> Map::<span class="pl-en">from</span>( [[<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">1</span>'</span>]], [<span class="pl-s">'<span class="pl-s">i</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">p</span>'</span> =&gt; <span class="pl-c1">1</span>]]] )-&gt;<span class="pl-en">unique</span>( <span class="pl-k">fn</span>( <span class="pl-s1"><span class="pl-c1">$</span>item</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) =&gt; <span class="pl-s1"><span class="pl-c1">$</span>item</span>[<span class="pl-s">'<span class="pl-s">i</span>'</span>][<span class="pl-s">'<span class="pl-s">p</span>'</span>] ); <span class="pl-c">// [0 =&gt; ['i' =&gt; ['p' =&gt; '1']]]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#duplicates">duplicates()</a> - Returns the duplicate values from the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">unshift()</h3><a id="user-content-unshift" class="anchor" aria-label="Permalink: unshift()" href="#unshift"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Pushes an element onto the beginning of the map without returning a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function unshift( $value, $key = null ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> unshift( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> = <span class="pl-c1">null</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>mixed</strong> <code>$value</code> Item to add at the beginning</li> <li>@param <strong>int|string|null</strong> <code>$key</code> Key for the item or NULL to reindex all numerical keys</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The keys of the elements are only preserved in the new map if no key is passed.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;unshift( 'd' ); // ['d', 'a', 'b'] Map::from( ['a', 'b'] )-&gt;unshift( 'd', 'first' ); // ['first' =&gt; 'd', 0 =&gt; 'a', 1 =&gt; 'b']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">unshift</span>( <span class="pl-s">'<span class="pl-s">d</span>'</span> ); <span class="pl-c">// ['d', 'a', 'b']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">unshift</span>( <span class="pl-s">'<span class="pl-s">d</span>'</span>, <span class="pl-s">'<span class="pl-s">first</span>'</span> ); <span class="pl-c">// ['first' =&gt; 'd', 0 =&gt; 'a', 1 =&gt; 'b']</span></pre></div> <p dir="auto"><strong>Performance note:</strong></p> <p dir="auto">The bigger the list, the higher the performance impact because <code>unshift()</code> needs to create a new list and copies all existing elements to the new array. Usually, it's better to <a href="#push">push()</a> new entries at the end and <a href="#reverse">reverse()</a> the list afterwards:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$map-&gt;push( 'a' )-&gt;push( 'b' )-&gt;reverse();"><pre><span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">push</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> )-&gt;<span class="pl-en">push</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> )-&gt;<span class="pl-en">reverse</span>();</pre></div> <p dir="auto">instead of</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$map-&gt;unshift( 'a' )-&gt;unshift( 'b' );"><pre><span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">unshift</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span> )-&gt;<span class="pl-en">unshift</span>( <span class="pl-s">'<span class="pl-s">b</span>'</span> );</pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#shift">shift()</a> - Returns and removes the first element from the map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">usort()</h3><a id="user-content-usort" class="anchor" aria-label="Permalink: usort()" href="#usort"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts all elements using a callback without maintaining the key association.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function usort( callable $callback ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> usort( <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>callable</strong> <code>$callback</code> Function with (itemA, itemB) parameters and returns -1 (&lt;), 0 (=) and 1 (&gt;)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">The given callback will be used to compare the values. The callback must accept two parameters (item A and B) and must return -1 if item A is smaller than item B, 0 if both are equal and 1 if item A is greater than item B. Both, a method name and an anonymous function can be passed.</p> <p dir="auto">The keys are NOT preserved and elements get a new index. No new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'B', 'b' =&gt; 'a'] )-&gt;usort( 'strcasecmp' ); // [0 =&gt; 'a', 1 =&gt; 'B'] Map::from( ['a' =&gt; 'B', 'b' =&gt; 'a'] )-&gt;usort( function( $itemA, $itemB ) { return strtolower( $itemA ) &lt;=&gt; strtolower( $itemB ); } ); // [0 =&gt; 'a', 1 =&gt; 'B']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">B</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">usort</span>( <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// [0 =&gt; 'a', 1 =&gt; 'B']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">B</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">usort</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>itemA</span>, <span class="pl-s1"><span class="pl-c1">$</span>itemB</span> ) { <span class="pl-k">return</span> <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>itemA</span> ) &lt;=&gt; <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>itemB</span> ); } ); <span class="pl-c">// [0 =&gt; 'a', 1 =&gt; 'B']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#usorted">usorted()</a> - Sorts a copy of all elements using a callback without maintaining the key association</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">usorted()</h3><a id="user-content-usorted" class="anchor" aria-label="Permalink: usorted()" href="#usorted"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Sorts a copy of all elements using a callback without maintaining the key association.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function usorted( callable $callback ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> usorted( <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>callable</strong> <code>$callback</code> Function with (itemA, itemB) parameters and returns -1 (&lt;), 0 (=) and 1 (&gt;)</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map</li> </ul> <p dir="auto">The given callback will be used to compare the values. The callback must accept two parameters (item A and B) and must return -1 if item A is smaller than item B, 0 if both are equal and 1 if item A is greater than item B. Both, a method name and an anonymous function can be passed.</p> <p dir="auto">The keys are NOT preserved and elements get a new index and a new map is created.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a' =&gt; 'B', 'b' =&gt; 'a'] )-&gt;usorted( 'strcasecmp' ); // [0 =&gt; 'a', 1 =&gt; 'B'] Map::from( ['a' =&gt; 'B', 'b' =&gt; 'a'] )-&gt;usorted( function( $itemA, $itemB ) { return strtolower( $itemA ) &lt;=&gt; strtolower( $itemB ); } ); // [0 =&gt; 'a', 1 =&gt; 'B']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">B</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">usorted</span>( <span class="pl-s">'<span class="pl-s">strcasecmp</span>'</span> ); <span class="pl-c">// [0 =&gt; 'a', 1 =&gt; 'B']</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">B</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">usorted</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>itemA</span>, <span class="pl-s1"><span class="pl-c1">$</span>itemB</span> ) { <span class="pl-k">return</span> <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>itemA</span> ) &lt;=&gt; <span class="pl-en">strtolower</span>( <span class="pl-s1"><span class="pl-c1">$</span>itemB</span> ); } ); <span class="pl-c">// [0 =&gt; 'a', 1 =&gt; 'B']</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#usort">usort()</a> - Sorts all elements using a callback without maintaining the key association</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">values()</h3><a id="user-content-values" class="anchor" aria-label="Permalink: values()" href="#values"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Resets the keys and return the values in a new map.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function values() : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> values() : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map of the values</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['x' =&gt; 'b', 2 =&gt; 'a', 'c'] )-&gt;values(); // [0 =&gt; 'b', 1 =&gt; 'a', 2 =&gt; 'c']"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">x</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">b</span>'</span>, <span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>] )-&gt;<span class="pl-en">values</span>(); <span class="pl-c">// [0 =&gt; 'b', 1 =&gt; 'a', 2 =&gt; 'c']</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">walk()</h3><a id="user-content-walk" class="anchor" aria-label="Permalink: walk()" href="#walk"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Applies the given callback to all elements.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function walk( callable $callback, $data = null, bool $recursive = true ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> walk( <span class="pl-smi">callable</span> <span class="pl-s1"><span class="pl-c1">$</span>callback</span>, <span class="pl-s1"><span class="pl-c1">$</span>data</span> = <span class="pl-c1">null</span>, <span class="pl-smi">bool</span> <span class="pl-s1"><span class="pl-c1">$</span>recursive</span> = <span class="pl-c1">true</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>callable</strong> <code>$callback</code> Function with (item, key, data) parameters</li> <li>@param <strong>mixed</strong> <code>$data</code> Arbitrary data that will be passed to the callback as third parameter</li> <li>@param <strong>bool</strong> <code>$recursive</code> TRUE to traverse sub-arrays recursively (default), FALSE to iterate Map elements only</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> Updated map for fluid interface</li> </ul> <p dir="auto">To change the values of the Map, specify the value parameter as reference (<code>&amp;$value</code>). You can only change the values but not the keys nor the array structure.</p> <p dir="auto">By default, Map elements which are arrays will be traversed recursively. To iterate over the Map elements only, pass FALSE as third parameter.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'B', ['c', 'd'], 'e'] )-&gt;walk( function( &amp;$value ) { $value = strtoupper( $value ); } ); // ['A', 'B', ['C', 'D'], 'E'] Map::from( [66 =&gt; 'B', 97 =&gt; 'a'] )-&gt;walk( function( $value, $key ) { echo 'ASCII ' . $key . ' is ' . $value . &quot;\n&quot;; } ); /* ASCII 66 is B ASCII 97 is a */ Map::from( [1, 2, 3] )-&gt;walk( function( &amp;$value, $key, $data ) { $value = $data[$value] ?? $value; }, [1 =&gt; 'one', 2 =&gt; 'two'] ); // ['one', 'two', 3]"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">B</span>'</span>, [<span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">d</span>'</span>], <span class="pl-s">'<span class="pl-s">e</span>'</span>] )-&gt;<span class="pl-en">walk</span>( <span class="pl-k">function</span>( &amp;<span class="pl-s1"><span class="pl-c1">$</span>value</span> ) { <span class="pl-s1"><span class="pl-c1">$</span>value</span> = <span class="pl-en">strtoupper</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span> ); } ); <span class="pl-c">// ['A', 'B', ['C', 'D'], 'E']</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">66</span> =&gt; <span class="pl-s">'<span class="pl-s">B</span>'</span>, <span class="pl-c1">97</span> =&gt; <span class="pl-s">'<span class="pl-s">a</span>'</span>] )-&gt;<span class="pl-en">walk</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">echo</span> <span class="pl-s">'<span class="pl-s">ASCII </span>'</span> . <span class="pl-s1"><span class="pl-c1">$</span>key</span> . <span class="pl-s">'<span class="pl-s"> is </span>'</span> . <span class="pl-s1"><span class="pl-c1">$</span>value</span> . <span class="pl-s">"\n"</span>; } ); <span class="pl-c">/*</span> <span class="pl-c">ASCII 66 is B</span> <span class="pl-c">ASCII 97 is a</span> <span class="pl-c">*/</span> Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>] )-&gt;<span class="pl-en">walk</span>( <span class="pl-k">function</span>( &amp;<span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-s1"><span class="pl-c1">$</span>data</span> ) { <span class="pl-s1"><span class="pl-c1">$</span>value</span> = <span class="pl-s1"><span class="pl-c1">$</span>data</span>[<span class="pl-s1"><span class="pl-c1">$</span>value</span>] ?? <span class="pl-s1"><span class="pl-c1">$</span>value</span>; }, [<span class="pl-c1">1</span> =&gt; <span class="pl-s">'<span class="pl-s">one</span>'</span>, <span class="pl-c1">2</span> =&gt; <span class="pl-s">'<span class="pl-s">two</span>'</span>] ); <span class="pl-c">// ['one', 'two', 3]</span></pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">where()</h3><a id="user-content-where" class="anchor" aria-label="Permalink: where()" href="#where"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Filters the list of elements by a given condition.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function where( string $key, string $op, $value ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> where( <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-smi">string</span> <span class="pl-s1"><span class="pl-c1">$</span>op</span>, <span class="pl-s1"><span class="pl-c1">$</span>value</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>string</strong> <code>$key</code> Key or path of the value of the array or object used for comparison</li> <li>@param <strong>string</strong> <code>$op</code> Operator used for comparison</li> <li>@param <strong>mixed</strong> <code>$value</code> Value used for comparison</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map for fluid interface</li> </ul> <p dir="auto">Available operators are:</p> <ul dir="auto"> <li>'==' : Equal</li> <li>'===' : Equal and same type</li> <li>'!=' : Not equal</li> <li>'!==' : Not equal and same type</li> <li>'&lt;=' : Smaller than an equal</li> <li>'&gt;=' : Greater than an equal</li> <li>'&lt;' : Smaller</li> <li>'&gt;' : Greater</li> <li>'in' : Array of value which are in the list of values</li> <li>'-' : Values between array of start and end value, e.g. [10, 100] (inclusive)</li> </ul> <p dir="auto">The keys of the original map are preserved in the returned map.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [ ['id' =&gt; 1, 'type' =&gt; 'name'], ['id' =&gt; 2, 'type' =&gt; 'short'], ] )-&gt;where( 'type', '==', 'name' ); /* [ ['id' =&gt; 1, 'type' =&gt; 'name'] ] */ Map::from( [ ['id' =&gt; 3, 'price' =&gt; 10], ['id' =&gt; 4, 'price' =&gt; 50], ] )-&gt;where( 'price', '&gt;', 20 ); /* [ ['id' =&gt; 4, 'price' =&gt; 50] ] */ Map::from( [ ['id' =&gt; 3, 'price' =&gt; 10], ['id' =&gt; 4, 'price' =&gt; 50], ] )-&gt;where( 'price', 'in', [10, 25] ); /* [ ['id' =&gt; 3, 'price' =&gt; 10] ] */ Map::from( [ ['id' =&gt; 3, 'price' =&gt; 10], ['id' =&gt; 4, 'price' =&gt; 50], ] )-&gt;where( 'price', '-', [10, 100] ); /* [ ['id' =&gt; 3, 'price' =&gt; 10], ['id' =&gt; 4, 'price' =&gt; 50] ] */ Map::from( [ ['item' =&gt; ['id' =&gt; 3, 'price' =&gt; 10]], ['item' =&gt; ['id' =&gt; 4, 'price' =&gt; 50]], ] )-&gt;where( 'item/price', '&gt;', 30 ); /* [ ['id' =&gt; 4, 'price' =&gt; 50] ] */"><pre>Map::<span class="pl-en">from</span>( [ [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">1</span>, <span class="pl-s">'<span class="pl-s">type</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">name</span>'</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">type</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">short</span>'</span>], ] )-&gt;<span class="pl-en">where</span>( <span class="pl-s">'<span class="pl-s">type</span>'</span>, <span class="pl-s">'<span class="pl-s">==</span>'</span>, <span class="pl-s">'<span class="pl-s">name</span>'</span> ); <span class="pl-c">/*</span> <span class="pl-c">[</span> <span class="pl-c"> ['id' =&gt; 1, 'type' =&gt; 'name']</span> <span class="pl-c">]</span> <span class="pl-c">*/</span> Map::<span class="pl-en">from</span>( [ [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">price</span>'</span> =&gt; <span class="pl-c1">10</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">4</span>, <span class="pl-s">'<span class="pl-s">price</span>'</span> =&gt; <span class="pl-c1">50</span>], ] )-&gt;<span class="pl-en">where</span>( <span class="pl-s">'<span class="pl-s">price</span>'</span>, <span class="pl-s">'<span class="pl-s">&gt;</span>'</span>, <span class="pl-c1">20</span> ); <span class="pl-c">/*</span> <span class="pl-c">[</span> <span class="pl-c"> ['id' =&gt; 4, 'price' =&gt; 50]</span> <span class="pl-c">]</span> <span class="pl-c">*/</span> Map::<span class="pl-en">from</span>( [ [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">price</span>'</span> =&gt; <span class="pl-c1">10</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">4</span>, <span class="pl-s">'<span class="pl-s">price</span>'</span> =&gt; <span class="pl-c1">50</span>], ] )-&gt;<span class="pl-en">where</span>( <span class="pl-s">'<span class="pl-s">price</span>'</span>, <span class="pl-s">'<span class="pl-s">in</span>'</span>, [<span class="pl-c1">10</span>, <span class="pl-c1">25</span>] ); <span class="pl-c">/*</span> <span class="pl-c">[</span> <span class="pl-c"> ['id' =&gt; 3, 'price' =&gt; 10]</span> <span class="pl-c">]</span> <span class="pl-c">*/</span> Map::<span class="pl-en">from</span>( [ [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">price</span>'</span> =&gt; <span class="pl-c1">10</span>], [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">4</span>, <span class="pl-s">'<span class="pl-s">price</span>'</span> =&gt; <span class="pl-c1">50</span>], ] )-&gt;<span class="pl-en">where</span>( <span class="pl-s">'<span class="pl-s">price</span>'</span>, <span class="pl-s">'<span class="pl-s">-</span>'</span>, [<span class="pl-c1">10</span>, <span class="pl-c1">100</span>] ); <span class="pl-c">/*</span> <span class="pl-c">[</span> <span class="pl-c"> ['id' =&gt; 3, 'price' =&gt; 10],</span> <span class="pl-c"> ['id' =&gt; 4, 'price' =&gt; 50]</span> <span class="pl-c">]</span> <span class="pl-c">*/</span> Map::<span class="pl-en">from</span>( [ [<span class="pl-s">'<span class="pl-s">item</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">3</span>, <span class="pl-s">'<span class="pl-s">price</span>'</span> =&gt; <span class="pl-c1">10</span>]], [<span class="pl-s">'<span class="pl-s">item</span>'</span> =&gt; [<span class="pl-s">'<span class="pl-s">id</span>'</span> =&gt; <span class="pl-c1">4</span>, <span class="pl-s">'<span class="pl-s">price</span>'</span> =&gt; <span class="pl-c1">50</span>]], ] )-&gt;<span class="pl-en">where</span>( <span class="pl-s">'<span class="pl-s">item/price</span>'</span>, <span class="pl-s">'<span class="pl-s">&gt;</span>'</span>, <span class="pl-c1">30</span> ); <span class="pl-c">/*</span> <span class="pl-c">[</span> <span class="pl-c"> ['id' =&gt; 4, 'price' =&gt; 50]</span> <span class="pl-c">]</span> <span class="pl-c">*/</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#filter">filter()</a> - Runs a filter over each element of the map and returns a new map</li> <li><a href="#grep">grep()</a> - Applies a regular expression to all elements</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">with()</h3><a id="user-content-with" class="anchor" aria-label="Permalink: with()" href="#with"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Returns a copy of the map with the element at the given index replaced with the given value.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function with( $key, $value ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> with( <span class="pl-s1"><span class="pl-c1">$</span>key</span>, <span class="pl-s1"><span class="pl-c1">$</span>value</span> ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>int|string</strong> <code>$key</code> Array key to set or replace</li> <li>@param <strong>mixed</strong> <code>$value</code> New value for the given key</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map of the values</li> </ul> <p dir="auto">The original map stays untouched! This method is a shortcut for calling the <a href="#copy">copy()</a> and <a href="#set">set()</a> methods.</p> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$m = Map::from( ['a' =&gt; 1] ); $m-&gt;with( 2, 'b' ); // ['a' =&gt; 1, 2 =&gt; 'b'] $m-&gt;with( 'a', 2 ); // ['a' =&gt; 2] $m-&gt;all(); // ['a' =&gt; 1]"><pre><span class="pl-s1"><span class="pl-c1">$</span>m</span> = Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-c1">1</span>] ); <span class="pl-s1"><span class="pl-c1">$</span>m</span>-&gt;<span class="pl-en">with</span>( <span class="pl-c1">2</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span> ); <span class="pl-c">// ['a' =&gt; 1, 2 =&gt; 'b']</span> <span class="pl-s1"><span class="pl-c1">$</span>m</span>-&gt;<span class="pl-en">with</span>( <span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-c1">2</span> ); <span class="pl-c">// ['a' =&gt; 2]</span> <span class="pl-s1"><span class="pl-c1">$</span>m</span>-&gt;<span class="pl-en">all</span>(); <span class="pl-c">// ['a' =&gt; 1]</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#set">set()</a> - Sets an element in the map by key without returning a new map</li> </ul> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">zip()</h3><a id="user-content-zip" class="anchor" aria-label="Permalink: zip()" href="#zip"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Merges the values of all arrays at the corresponding index.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="public function zip( $array1, ... ) : self"><pre><span class="pl-k">public</span> <span class="pl-k">function</span> zip( <span class="pl-s1"><span class="pl-c1">$</span>array1</span>, ... ) : <span class="pl-smi"><span class="pl-smi">self</span></span></pre></div> <ul dir="auto"> <li>@param <strong>array&lt;int|string,mixed&gt;|\Traversable&lt;int|string,mixed&gt;|\Iterator&lt;int|string,mixed&gt;</strong> <code>$array1</code> List of arrays to merge with at the same position</li> <li>@return <strong>self&lt;int|string,mixed&gt;</strong> New map of arrays</li> </ul> <p dir="auto"><strong>Examples:</strong></p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [1, 2, 3] )-&gt;zip( ['one', 'two', 'three'], ['uno', 'dos', 'tres'] ); /* [ [1, 'one', 'uno'], [2, 'two', 'dos'], [3, 'three', 'tres'], ] */"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-c1">1</span>, <span class="pl-c1">2</span>, <span class="pl-c1">3</span>] )-&gt;<span class="pl-en">zip</span>( [<span class="pl-s">'<span class="pl-s">one</span>'</span>, <span class="pl-s">'<span class="pl-s">two</span>'</span>, <span class="pl-s">'<span class="pl-s">three</span>'</span>], [<span class="pl-s">'<span class="pl-s">uno</span>'</span>, <span class="pl-s">'<span class="pl-s">dos</span>'</span>, <span class="pl-s">'<span class="pl-s">tres</span>'</span>] ); <span class="pl-c">/*</span> <span class="pl-c">[</span> <span class="pl-c"> [1, 'one', 'uno'],</span> <span class="pl-c"> [2, 'two', 'dos'],</span> <span class="pl-c"> [3, 'three', 'tres'],</span> <span class="pl-c">]</span> <span class="pl-c">*/</span></pre></div> <p dir="auto"><strong>See also:</strong></p> <ul dir="auto"> <li><a href="#combine">combine()</a> - Combines the values of the map as keys with the passed elements as values</li> </ul> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Custom methods</h2><a id="user-content-custom-methods" class="anchor" aria-label="Permalink: Custom methods" href="#custom-methods"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Most of the time, it's enough to pass an anonymous function to the <a href="#pipe">pipe()</a> method to implement custom functionality in map objects:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( ['a', 'b'] )-&gt;pipe( function( $map ) { return strrev( $map-&gt;join( '-' ) ); } );"><pre>Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">pipe</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span> ) { <span class="pl-k">return</span> <span class="pl-en">strrev</span>( <span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">join</span>( <span class="pl-s">'<span class="pl-s">-</span>'</span> ) ); } );</pre></div> <p dir="auto">If you need some functionality more often and at different places in your source code, than it's better to register a custom method once and only call it everywhere:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::method( 'strrev', function( $sep ) { return strrev( join( '-', $this-&gt;list() ) ); } ); Map::from( ['a', 'b'] )-&gt;strrev( '-' );"><pre>Map::<span class="pl-en">method</span>( <span class="pl-s">'<span class="pl-s">strrev</span>'</span>, <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>sep</span> ) { <span class="pl-k">return</span> <span class="pl-en">strrev</span>( <span class="pl-en">join</span>( <span class="pl-s">'<span class="pl-s">-</span>'</span>, <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-en">list</span>() ) ); } ); Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">b</span>'</span>] )-&gt;<span class="pl-en">strrev</span>( <span class="pl-s">'<span class="pl-s">-</span>'</span> );</pre></div> <p dir="auto">Make sure, you register the method before using it. You can pass arbitrary parameters to your function and it has access to the internas of the map. Thus, your function can use <code>$this</code> to call all available methods:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::method( 'notInBoth', function( iterable $elements ) { return new self( $this-&gt;diff( $elements ) + Map::from( $elements )-&gt;diff( $this-&gt;items ) ); } );"><pre>Map::<span class="pl-en">method</span>( <span class="pl-s">'<span class="pl-s">notInBoth</span>'</span>, <span class="pl-k">function</span>( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>elements</span> ) { <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-v">self</span>( <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-en">diff</span>( <span class="pl-s1"><span class="pl-c1">$</span>elements</span> ) + Map::<span class="pl-en">from</span>( <span class="pl-s1"><span class="pl-c1">$</span>elements</span> )-&gt;<span class="pl-en">diff</span>( <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-c1">items</span> ) ); } );</pre></div> <p dir="auto">Your custom method has access to <code>$this-&gt;items</code> array which contains the map elements and can also use the internal <code>$this-&gt;getArray( iterable $list )</code> method to convert iterable parameters (arrays, generators and objects implementing \Traversable) to plain arrays:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::method( 'mycombine', function( iterable $keys ) { return new self( array_combine( $this-&gt;getArray( $keys ), $this-items ) ); } );"><pre>Map::<span class="pl-en">method</span>( <span class="pl-s">'<span class="pl-s">mycombine</span>'</span>, <span class="pl-k">function</span>( <span class="pl-smi">iterable</span> <span class="pl-s1"><span class="pl-c1">$</span>keys</span> ) { <span class="pl-k">return</span> <span class="pl-k">new</span> <span class="pl-v">self</span>( <span class="pl-en">array_combine</span>( <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-en">getArray</span>( <span class="pl-s1"><span class="pl-c1">$</span>keys</span> ), <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-items ) ); } );</pre></div> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Performance</h2><a id="user-content-performance" class="anchor" aria-label="Permalink: Performance" href="#performance"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">The performance most methods only depends on the array_* function that are used internally by the Map class. If the methods of the Map class contains additional code, it's optimized to be as fast as possible.</p> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Creating Map vs. array</h3><a id="user-content-creating-map-vs-array" class="anchor" aria-label="Permalink: Creating Map vs. array" href="#creating-map-vs-array"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Creating an map object with an array instead of creating a plain array only is significantly slower (ca. 10x) but in absolute values we are talking about nano seconds. It will only get notable if you create 10,000 map objects instead of 10,000 arrays. Then, creating maps will last ca. 10ms longer.</p> <p dir="auto">Usually, this isn't much of a problem because applications create arrays with lots of elements instead of 10,000+ arrays. Nevertheless, if your application creates a very large number of arrays within one area, you should think about avoiding map objects in that area.</p> <p dir="auto">If you use the <a href="#map-function">map()</a> function or <a href="#from">Map::from()</a> to create map objects, then be aware that this adds another function call. Using these methods for creating the map object lasts around 1.1x resp. 1.3x compared to the time for <code>new Map()</code>.</p> <p dir="auto">Conclusion: Using <code>new Map()</code> is fastest and <code>map()</code> is faster than <code>Map::from()</code>.</p> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Populating Map vs. array</h3><a id="user-content-populating-map-vs-array" class="anchor" aria-label="Permalink: Populating Map vs. array" href="#populating-map-vs-array"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Adding an element to a Map object using <code>$map[] = 'a'</code> is ca. 5x slower than doing the same on a plain array. This is because the method <a href="#offsetset">offsetSet()</a> will be called instead of adding the new element to the array directly. This applies to the <code>$map-&gt;push( 'a' )</code> method too.</p> <p dir="auto">When creating arrays in loops, you should populate the array first and then create a Map object from the the array:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$list = []; for( $i = 0; $i &lt; 1000; $i++ ) { $list[] = $i; } $map = map( $list );"><pre><span class="pl-s1"><span class="pl-c1">$</span>list</span> = []; <span class="pl-k">for</span>( <span class="pl-s1"><span class="pl-c1">$</span>i</span> = <span class="pl-c1">0</span>; <span class="pl-s1"><span class="pl-c1">$</span>i</span> &lt; <span class="pl-c1">1000</span>; <span class="pl-s1"><span class="pl-c1">$</span>i</span>++ ) { <span class="pl-s1"><span class="pl-c1">$</span>list</span>[] = <span class="pl-s1"><span class="pl-c1">$</span>i</span>; } <span class="pl-s1"><span class="pl-c1">$</span>map</span> = <span class="pl-en">map</span>( <span class="pl-s1"><span class="pl-c1">$</span>list</span> );</pre></div> <p dir="auto">The array is <strong>NOT</strong> copied when creating the Map object so there's virtually no performance loss using the Map afterwards.</p> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Using Map methods vs. language constructs</h3><a id="user-content-using-map-methods-vs-language-constructs" class="anchor" aria-label="Permalink: Using Map methods vs. language constructs" href="#using-map-methods-vs-language-constructs"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Language constructs such as <code>empty()</code>, <code>count()</code> or <code>isset()</code> are faster than calling a method and using <code>$map-&gt;isEmpty()</code> or <code>$map-&gt;count()</code> is ca. 4x slower.</p> <p dir="auto">Again, we are talking about nano seconds. For 10,000 calls to <code>empty( $array )</code> compared to <code>$map-&gt;isEmpty()</code>, the costs are around 4ms in total.</p> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Using Map methods vs. array_* functions</h3><a id="user-content-using-map-methods-vs-array_-functions" class="anchor" aria-label="Permalink: Using Map methods vs. array_* functions" href="#using-map-methods-vs-array_-functions"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Using the Map methods instead of the array_* functions adds an additional method call. Internally, the Map objects uses the same array_* functions but offers a much more usable interface.</p> <p dir="auto">The time for the additional method call is almost neglectable because the array_* methods needs much longer to perform the operation on the array elements depending on the size of the array.</p> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Using anonymous functions</h3><a id="user-content-using-anonymous-functions" class="anchor" aria-label="Permalink: Using anonymous functions" href="#using-anonymous-functions"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Several Map methods support passing an anonymous function that is applied to every element of the map. PHP needs some time to call the passed function and to execute its code. Depending on the number of elements, this may have a significant impact on performance!</p> <p dir="auto">The <a href="#pipe">pipe()</a> method of the Map object is an exception because it receives the whole map object instead of each element separately. Its performance mainly depends on the implemented code:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$map-&gt;pipe( function( Map $map ) { // perform operations on the map } );"><pre><span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">pipe</span>( <span class="pl-k">function</span>( <span class="pl-smi"><span class="pl-smi">Map</span></span> <span class="pl-s1"><span class="pl-c1">$</span>map</span> ) { <span class="pl-c">// perform operations on the map</span> } );</pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">Using shift() and unshift()</h3><a id="user-content-using-shift-and-unshift" class="anchor" aria-label="Permalink: Using shift() and unshift()" href="#using-shift-and-unshift"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Both methods are costly, especially on large arrays. The used <code>array_shift()</code> and <code>array_unshift()</code> functions will reindex all numerical keys of the array.</p> <p dir="auto">If you want to reduce or create a large list of elements from the beginning in an iterative way, you should use <a href="#reverse">reverse()</a> and <a href="#pop">pop()</a>/<a href="#push">push()</a> instead of <a href="#shift">shift()</a> and <a href="#unshift">unshift()</a>/<a href="#prepend">prepend()</a>:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$map-&gt;reverse()-&gt;pop(); // use pop() until it returns NULL $map-&gt;push( 'z' )-&gt;push( 'y' )-&gt;push( 'x' )-&gt;reverse(); // use push() for adding"><pre><span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">reverse</span>()-&gt;<span class="pl-en">pop</span>(); <span class="pl-c">// use pop() until it returns NULL</span> <span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">push</span>( <span class="pl-s">'<span class="pl-s">z</span>'</span> )-&gt;<span class="pl-en">push</span>( <span class="pl-s">'<span class="pl-s">y</span>'</span> )-&gt;<span class="pl-en">push</span>( <span class="pl-s">'<span class="pl-s">x</span>'</span> )-&gt;<span class="pl-en">reverse</span>(); <span class="pl-c">// use push() for adding</span></pre></div> <div class="markdown-heading" dir="auto"><h2 tabindex="-1" class="heading-element" dir="auto">Upgrade guide</h2><a id="user-content-upgrade-guide" class="anchor" aria-label="Permalink: Upgrade guide" href="#upgrade-guide"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">2.x -&gt; 3.x</h3><a id="user-content-2x---3x" class="anchor" aria-label="Permalink: 2.x -&gt; 3.x" href="#2x---3x"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <div class="markdown-heading" dir="auto"><h4 tabindex="-1" class="heading-element" dir="auto">Use list() method</h4><a id="user-content-use-list-method" class="anchor" aria-label="Permalink: Use list() method" href="#use-list-method"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">When adding own methods to the Map object, don't access the <code>$this-&gt;list</code> class variable directly. It's not guaranteed to be an array any more but will store the value passed to the Map constructor. Instead, use the `list() method to get a reference to the array of elements:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$this-&gt;list();"><pre><span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-en">list</span>();</pre></div> <p dir="auto">As it's a reference to the array of elements, you can modify it directly or even use PHP functions that require a variable reference:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$this-&gt;list()[] = 123; reset( $this-&gt;list() );"><pre><span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-en">list</span>()[] = <span class="pl-c1">123</span>; <span class="pl-en">reset</span>( <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-en">list</span>() );</pre></div> <div class="markdown-heading" dir="auto"><h4 tabindex="-1" class="heading-element" dir="auto">Renamed internal methods</h4><a id="user-content-renamed-internal-methods" class="anchor" aria-label="Permalink: Renamed internal methods" href="#renamed-internal-methods"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">Two internal methods have been renamed and you have to use their new name if you have added own methods to the Map object:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="// instead of $this-&gt;getArray( $array ) $this-&gt;array( $array ) // instead of $this-&gt;getValue( $entry, array $parts ) $this-&gt;val( $entry, array $parts )"><pre><span class="pl-c">// instead of $this-&gt;getArray( $array )</span> <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-en">array</span>( <span class="pl-s1"><span class="pl-c1">$</span>array</span> ) <span class="pl-c">// instead of $this-&gt;getValue( $entry, array $parts )</span> <span class="pl-s1"><span class="pl-c1">$</span><span class="pl-smi">this</span></span>-&gt;<span class="pl-en">val</span>( <span class="pl-s1"><span class="pl-c1">$</span>entry</span>, array <span class="pl-s1"><span class="pl-c1">$</span>parts</span> )</pre></div> <div class="markdown-heading" dir="auto"><h3 tabindex="-1" class="heading-element" dir="auto">1.x -&gt; 2.x</h3><a id="user-content-1x---2x" class="anchor" aria-label="Permalink: 1.x -&gt; 2.x" href="#1x---2x"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <div class="markdown-heading" dir="auto"><h4 tabindex="-1" class="heading-element" dir="auto">jQuery style method calls</h4><a id="user-content-jquery-style-method-calls" class="anchor" aria-label="Permalink: jQuery style method calls" href="#jquery-style-method-calls"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">You can call methods of objects in a map like this:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="// MyClass implements setStatus() (returning $this) and getCode() (initialized by constructor) $map = Map::from( ['a' =&gt; new MyClass( 'x' ), 'b' =&gt; new MyClass( 'y' )] ); $map-&gt;setStatus( 1 )-&gt;getCode()-&gt;toArray();"><pre><span class="pl-c">// MyClass implements setStatus() (returning $this) and getCode() (initialized by constructor)</span> <span class="pl-s1"><span class="pl-c1">$</span>map</span> = Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span> =&gt; <span class="pl-k">new</span> <span class="pl-v">MyClass</span>( <span class="pl-s">'<span class="pl-s">x</span>'</span> ), <span class="pl-s">'<span class="pl-s">b</span>'</span> =&gt; <span class="pl-k">new</span> <span class="pl-v">MyClass</span>( <span class="pl-s">'<span class="pl-s">y</span>'</span> )] ); <span class="pl-s1"><span class="pl-c1">$</span>map</span>-&gt;<span class="pl-en">setStatus</span>( <span class="pl-c1">1</span> )-&gt;<span class="pl-en">getCode</span>()-&gt;<span class="pl-en">toArray</span>();</pre></div> <p dir="auto">Before, it was checked if the objects really implement <code>setStatus()</code> and <code>getCode()</code>.</p> <p dir="auto">This isn't the case any more to avoid returning an empty map if the method name is wrong or the called method is implemented using the <code>__call()</code> magic method. Now, PHP generates a fatal error if the method isn't implemented by all objects.</p> <div class="markdown-heading" dir="auto"><h4 tabindex="-1" class="heading-element" dir="auto">Second equals() parameter</h4><a id="user-content-second-equals-parameter" class="anchor" aria-label="Permalink: Second equals() parameter" href="#second-equals-parameter"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">The second parameter of the <a href="#equals">equals()</a> method (<code>$assoc</code>) to compare keys too has been removed. Use the <a href="#is">is()</a> method instead:</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="// 1.x map( ['one' =&gt; 1] )-&gt;equals( ['one' =&gt; 1], true ); // 2.x map( ['one' =&gt; 1] )-&gt;is( ['one' =&gt; 1] );"><pre><span class="pl-c">// 1.x</span> <span class="pl-en">map</span>( [<span class="pl-s">'<span class="pl-s">one</span>'</span> =&gt; <span class="pl-c1">1</span>] )-&gt;<span class="pl-en">equals</span>( [<span class="pl-s">'<span class="pl-s">one</span>'</span> =&gt; <span class="pl-c1">1</span>], <span class="pl-c1">true</span> ); <span class="pl-c">// 2.x</span> <span class="pl-en">map</span>( [<span class="pl-s">'<span class="pl-s">one</span>'</span> =&gt; <span class="pl-c1">1</span>] )-&gt;<span class="pl-en">is</span>( [<span class="pl-s">'<span class="pl-s">one</span>'</span> =&gt; <span class="pl-c1">1</span>] );</pre></div> <div class="markdown-heading" dir="auto"><h4 tabindex="-1" class="heading-element" dir="auto">New find() argument</h4><a id="user-content-new-find-argument" class="anchor" aria-label="Permalink: New find() argument" href="#new-find-argument"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">A default value or exception object can be passed to the <a href="#find">find()</a> method now as second argument. The <code>$reverse</code> argument has been moved to the third position.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="// 1.x Map::from( ['a', 'c', 'e'] )-&gt;find( function( $value, $key ) { return $value &gt;= 'b'; }, true ); // 2.x Map::from( ['a', 'c', 'e'] )-&gt;find( function( $value, $key ) { return $value &gt;= 'b'; }, null, true );"><pre><span class="pl-c">// 1.x</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">e</span>'</span>] )-&gt;<span class="pl-en">find</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> &gt;= <span class="pl-s">'<span class="pl-s">b</span>'</span>; }, <span class="pl-c1">true</span> ); <span class="pl-c">// 2.x</span> Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">a</span>'</span>, <span class="pl-s">'<span class="pl-s">c</span>'</span>, <span class="pl-s">'<span class="pl-s">e</span>'</span>] )-&gt;<span class="pl-en">find</span>( <span class="pl-k">function</span>( <span class="pl-s1"><span class="pl-c1">$</span>value</span>, <span class="pl-s1"><span class="pl-c1">$</span>key</span> ) { <span class="pl-k">return</span> <span class="pl-s1"><span class="pl-c1">$</span>value</span> &gt;= <span class="pl-s">'<span class="pl-s">b</span>'</span>; }, <span class="pl-c1">null</span>, <span class="pl-c1">true</span> );</pre></div> <div class="markdown-heading" dir="auto"><h4 tabindex="-1" class="heading-element" dir="auto">groupBy() semantic change</h4><a id="user-content-groupby-semantic-change" class="anchor" aria-label="Permalink: groupBy() semantic change" href="#groupby-semantic-change"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">If the key passed to <a href="#groupby">groupBy()</a> didn't exist, the items have been grouped using the given key. Now, an empty string is used as key to offer easier checking and sorting of the keys.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="Map::from( [ 10 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-abc'], ] )-&gt;groupBy( 'xid' ); // 1.x [ 'xid' =&gt; [ 10 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-abc'] ] ] // 2.x [ '' =&gt; [ 10 =&gt; ['aid' =&gt; 123, 'code' =&gt; 'x-abc'] ] ]"><pre>Map::<span class="pl-en">from</span>( [ <span class="pl-c1">10</span> =&gt; [<span class="pl-s">'<span class="pl-s">aid</span>'</span> =&gt; <span class="pl-c1">123</span>, <span class="pl-s">'<span class="pl-s">code</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">x-abc</span>'</span>], ] )-&gt;<span class="pl-en">groupBy</span>( <span class="pl-s">'<span class="pl-s">xid</span>'</span> ); <span class="pl-c">// 1.x</span> [ <span class="pl-s">'<span class="pl-s">xid</span>'</span> =&gt; [ <span class="pl-c1">10</span> =&gt; [<span class="pl-s">'<span class="pl-s">aid</span>'</span> =&gt; <span class="pl-c1">123</span>, <span class="pl-s">'<span class="pl-s">code</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">x-abc</span>'</span>] ] ] <span class="pl-c">// 2.x</span> [ <span class="pl-s">''</span> =&gt; [ <span class="pl-c1">10</span> =&gt; [<span class="pl-s">'<span class="pl-s">aid</span>'</span> =&gt; <span class="pl-c1">123</span>, <span class="pl-s">'<span class="pl-s">code</span>'</span> =&gt; <span class="pl-s">'<span class="pl-s">x-abc</span>'</span>] ] ]</pre></div> <div class="markdown-heading" dir="auto"><h4 tabindex="-1" class="heading-element" dir="auto">offsetExists() semantic change</h4><a id="user-content-offsetexists-semantic-change" class="anchor" aria-label="Permalink: offsetExists() semantic change" href="#offsetexists-semantic-change"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">To be consistent with typical PHP behavior, the <a href="#offsetexists">offsetExists()</a> method use <code>isset()</code> instead of <code>array_key_exists()</code> now. This changes the behavior when dealing with NULL values.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="$m = Map::from( ['foo' =&gt; null] ); // 1.x isset( $m['foo'] ); // true // 2.x isset( $m['foo'] ); // false"><pre><span class="pl-s1"><span class="pl-c1">$</span>m</span> = Map::<span class="pl-en">from</span>( [<span class="pl-s">'<span class="pl-s">foo</span>'</span> =&gt; <span class="pl-c1">null</span>] ); <span class="pl-c">// 1.x</span> <span class="pl-en">isset</span>( <span class="pl-s1"><span class="pl-c1">$</span>m</span>[<span class="pl-s">'<span class="pl-s">foo</span>'</span>] ); <span class="pl-c">// true</span> <span class="pl-c">// 2.x</span> <span class="pl-en">isset</span>( <span class="pl-s1"><span class="pl-c1">$</span>m</span>[<span class="pl-s">'<span class="pl-s">foo</span>'</span>] ); <span class="pl-c">// false</span></pre></div> <div class="markdown-heading" dir="auto"><h4 tabindex="-1" class="heading-element" dir="auto">Renamed split() method</h4><a id="user-content-renamed-split-method" class="anchor" aria-label="Permalink: Renamed split() method" href="#renamed-split-method"><svg class="octicon octicon-link" viewBox="0 0 16 16" version="1.1" width="16" height="16" aria-hidden="true"><path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path></svg></a></div> <p dir="auto">The static <code>Map::split()</code> method has been renamed to <a href="#explode">Map::explode()</a> and the argument order has changed. This avoids conflicts with the Laravel split() method and is in line with the PHP <code>explode()</code> method.</p> <div class="highlight highlight-text-html-php notranslate position-relative overflow-auto" dir="auto" data-snippet-clipboard-copy-content="// 1.x Map::split( 'a,b,c', ',' ); // 2.x Map::explode( ',', 'a,b,c' );"><pre><span class="pl-c">// 1.x</span> Map::<span class="pl-en">split</span>( <span class="pl-s">'<span class="pl-s">a,b,c</span>'</span>, <span class="pl-s">'<span class="pl-s">,</span>'</span> ); <span class="pl-c">// 2.x</span> Map::<span class="pl-en">explode</span>( <span class="pl-s">'<span class="pl-s">,</span>'</span>, <span class="pl-s">'<span class="pl-s">a,b,c</span>'</span> );</pre></div> </article></div></div></div></div></div> <!-- --> <!-- --> <script type="application/json" id="__PRIMER_DATA_:R0:__">{"resolvedServerColorMode":"day"}</script></div> </react-partial> <input type="hidden" data-csrf="true" value="pGXr0Lwzz9zu2CJzUkTsZhPyqG7uLhX4WPyj5c9SDdrfvTXntuk9zCRTxHB0sGHURCMUyI58zU7tZc2Cml35xA==" /> </div> <div data-view-component="true" class="Layout-sidebar"> <div class="BorderGrid about-margin" data-pjax> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <div class="hide-sm hide-md"> <h2 class="mb-3 h4">About</h2> <p class="f4 my-3"> PHP arrays and collections made easy </p> <div class="my-3 d-flex flex-items-center"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-link flex-shrink-0 mr-2"> <path d="m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z"></path> </svg> <span class="flex-auto min-width-0 css-truncate css-truncate-target width-fit"> <a title="http://php-map.org" role="link" target="_blank" rel="noopener noreferrer nofollow" class="text-bold" href="http://php-map.org">php-map.org</a> </span> </div> <h3 class="sr-only">Topics</h3> <div class="my-3"> <div class="f6"> <a href="/topics/map" title="Topic: map" data-view-component="true" class="topic-tag topic-tag-link"> map </a> <a href="/topics/php" title="Topic: php" data-view-component="true" class="topic-tag topic-tag-link"> php </a> <a href="/topics/collection" title="Topic: collection" data-view-component="true" class="topic-tag topic-tag-link"> collection </a> <a href="/topics/array" title="Topic: array" data-view-component="true" class="topic-tag topic-tag-link"> array </a> <a href="/topics/php-arrays" title="Topic: php-arrays" data-view-component="true" class="topic-tag topic-tag-link"> php-arrays </a> <a href="/topics/php-map" title="Topic: php-map" data-view-component="true" class="topic-tag topic-tag-link"> php-map </a> </div> </div> <h3 class="sr-only">Resources</h3> <div class="mt-2"> <a class="Link--muted" data-analytics-event="{&quot;category&quot;:&quot;Repository Overview&quot;,&quot;action&quot;:&quot;click&quot;,&quot;label&quot;:&quot;location:sidebar;file:readme&quot;}" href="#readme-ov-file"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-book mr-2"> <path d="M0 1.75A.75.75 0 0 1 .75 1h4.253c1.227 0 2.317.59 3 1.501A3.743 3.743 0 0 1 11.006 1h4.245a.75.75 0 0 1 .75.75v10.5a.75.75 0 0 1-.75.75h-4.507a2.25 2.25 0 0 0-1.591.659l-.622.621a.75.75 0 0 1-1.06 0l-.622-.621A2.25 2.25 0 0 0 5.258 13H.75a.75.75 0 0 1-.75-.75Zm7.251 10.324.004-5.073-.002-2.253A2.25 2.25 0 0 0 5.003 2.5H1.5v9h3.757a3.75 3.75 0 0 1 1.994.574ZM8.755 4.75l-.004 7.322a3.752 3.752 0 0 1 1.992-.572H14.5v-9h-3.495a2.25 2.25 0 0 0-2.25 2.25Z"></path> </svg> Readme </a> </div> <h3 class="sr-only">License</h3> <div class="mt-2"> <a href="#MIT-1-ov-file" class="Link--muted" data-analytics-event="{&quot;category&quot;:&quot;Repository Overview&quot;,&quot;action&quot;:&quot;click&quot;,&quot;label&quot;:&quot;location:sidebar;file:license&quot;}" > <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-law mr-2"> <path d="M8.75.75V2h.985c.304 0 .603.08.867.231l1.29.736c.038.022.08.033.124.033h2.234a.75.75 0 0 1 0 1.5h-.427l2.111 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.006.005-.01.01-.045.04c-.21.176-.441.327-.686.45C14.556 10.78 13.88 11 13 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L12.178 4.5h-.162c-.305 0-.604-.079-.868-.231l-1.29-.736a.245.245 0 0 0-.124-.033H8.75V13h2.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5h2.5V3.5h-.984a.245.245 0 0 0-.124.033l-1.289.737c-.265.15-.564.23-.869.23h-.162l2.112 4.692a.75.75 0 0 1-.154.838l-.53-.53.529.531-.001.002-.002.002-.006.006-.016.015-.045.04c-.21.176-.441.327-.686.45C4.556 10.78 3.88 11 3 11a4.498 4.498 0 0 1-2.023-.454 3.544 3.544 0 0 1-.686-.45l-.045-.04-.016-.015-.006-.006-.004-.004v-.001a.75.75 0 0 1-.154-.838L2.178 4.5H1.75a.75.75 0 0 1 0-1.5h2.234a.249.249 0 0 0 .125-.033l1.288-.737c.265-.15.564-.23.869-.23h.984V.75a.75.75 0 0 1 1.5 0Zm2.945 8.477c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L13 6.327Zm-10 0c.285.135.718.273 1.305.273s1.02-.138 1.305-.273L3 6.327Z"></path> </svg> MIT license </a> </div> <include-fragment src="/aimeos/map/hovercards/citation/sidebar_partial?tree_name=3.x"> </include-fragment> <div class="mt-2"> <a href="/aimeos/map/activity" data-view-component="true" class="Link Link--muted"><svg text="gray" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-pulse mr-2"> <path d="M6 2c.306 0 .582.187.696.471L10 10.731l1.304-3.26A.751.751 0 0 1 12 7h3.25a.75.75 0 0 1 0 1.5h-2.742l-1.812 4.528a.751.751 0 0 1-1.392 0L6 4.77 4.696 8.03A.75.75 0 0 1 4 8.5H.75a.75.75 0 0 1 0-1.5h2.742l1.812-4.529A.751.751 0 0 1 6 2Z"></path> </svg> <span class="color-fg-muted">Activity</span></a> </div> <h3 class="sr-only">Stars</h3> <div class="mt-2"> <a href="/aimeos/map/stargazers" data-view-component="true" class="Link Link--muted"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-star mr-2"> <path d="M8 .25a.75.75 0 0 1 .673.418l1.882 3.815 4.21.612a.75.75 0 0 1 .416 1.279l-3.046 2.97.719 4.192a.751.751 0 0 1-1.088.791L8 12.347l-3.766 1.98a.75.75 0 0 1-1.088-.79l.72-4.194L.818 6.374a.75.75 0 0 1 .416-1.28l4.21-.611L7.327.668A.75.75 0 0 1 8 .25Zm0 2.445L6.615 5.5a.75.75 0 0 1-.564.41l-3.097.45 2.24 2.184a.75.75 0 0 1 .216.664l-.528 3.084 2.769-1.456a.75.75 0 0 1 .698 0l2.77 1.456-.53-3.084a.75.75 0 0 1 .216-.664l2.24-2.183-3.096-.45a.75.75 0 0 1-.564-.41L8 2.694Z"></path> </svg> <strong>3.6k</strong> stars</a> </div> <h3 class="sr-only">Watchers</h3> <div class="mt-2"> <a href="/aimeos/map/watchers" data-view-component="true" class="Link Link--muted"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-eye mr-2"> <path d="M8 2c1.981 0 3.671.992 4.933 2.078 1.27 1.091 2.187 2.345 2.637 3.023a1.62 1.62 0 0 1 0 1.798c-.45.678-1.367 1.932-2.637 3.023C11.67 13.008 9.981 14 8 14c-1.981 0-3.671-.992-4.933-2.078C1.797 10.83.88 9.576.43 8.898a1.62 1.62 0 0 1 0-1.798c.45-.677 1.367-1.931 2.637-3.022C4.33 2.992 6.019 2 8 2ZM1.679 7.932a.12.12 0 0 0 0 .136c.411.622 1.241 1.75 2.366 2.717C5.176 11.758 6.527 12.5 8 12.5c1.473 0 2.825-.742 3.955-1.715 1.124-.967 1.954-2.096 2.366-2.717a.12.12 0 0 0 0-.136c-.412-.621-1.242-1.75-2.366-2.717C10.824 4.242 9.473 3.5 8 3.5c-1.473 0-2.825.742-3.955 1.715-1.124.967-1.954 2.096-2.366 2.717ZM8 10a2 2 0 1 1-.001-3.999A2 2 0 0 1 8 10Z"></path> </svg> <strong>9</strong> watching</a> </div> <h3 class="sr-only">Forks</h3> <div class="mt-2"> <a href="/aimeos/map/forks" data-view-component="true" class="Link Link--muted"><svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-repo-forked mr-2"> <path d="M5 5.372v.878c0 .414.336.75.75.75h4.5a.75.75 0 0 0 .75-.75v-.878a2.25 2.25 0 1 1 1.5 0v.878a2.25 2.25 0 0 1-2.25 2.25h-1.5v2.128a2.251 2.251 0 1 1-1.5 0V8.5h-1.5A2.25 2.25 0 0 1 3.5 6.25v-.878a2.25 2.25 0 1 1 1.5 0ZM5 3.25a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Zm6.75.75a.75.75 0 1 0 0-1.5.75.75 0 0 0 0 1.5Zm-3 8.75a.75.75 0 1 0-1.5 0 .75.75 0 0 0 1.5 0Z"></path> </svg> <strong>17</strong> forks</a> </div> <div class="mt-2"> <a class="Link--muted" href="/contact/report-content?content_url=https%3A%2F%2Fgithub.com%2Faimeos%2Fmap&amp;report=aimeos+%28user%29"> Report repository </a> </div> </div> </div> </div> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <h2 class="h4 mb-3" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame"> <a href="/aimeos/map/releases" data-view-component="true" class="Link--primary no-underline Link">Releases</a></h2> <a class="Link--primary no-underline" data-pjax="#repo-content-pjax-container" data-turbo-frame="repo-content-turbo-frame" href="/aimeos/map/tags"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-tag"> <path d="M1 7.775V2.75C1 1.784 1.784 1 2.75 1h5.025c.464 0 .91.184 1.238.513l6.25 6.25a1.75 1.75 0 0 1 0 2.474l-5.026 5.026a1.75 1.75 0 0 1-2.474 0l-6.25-6.25A1.752 1.752 0 0 1 1 7.775Zm1.5 0c0 .066.026.13.073.177l6.25 6.25a.25.25 0 0 0 .354 0l5.025-5.025a.25.25 0 0 0 0-.354l-6.25-6.25a.25.25 0 0 0-.177-.073H2.75a.25.25 0 0 0-.25.25ZM6 5a1 1 0 1 1 0 2 1 1 0 0 1 0-2Z"></path> </svg> <span class="text-bold">41</span> <span class="color-fg-muted">tags</span> </a> </div> </div> <div class="BorderGrid-row" hidden> <div class="BorderGrid-cell"> <include-fragment src="/aimeos/map/used_by_list" accept="text/fragment+html"> </include-fragment> </div> </div> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <h2 class="h4 mb-3"> <a href="/aimeos/map/graphs/contributors" data-view-component="true" class="Link--primary no-underline Link d-flex flex-items-center">Contributors <span title="3" data-view-component="true" class="Counter ml-1">3</span></a></h2> <include-fragment src="/aimeos/map/contributors_list?count=3&amp;current_repository=map&amp;items_to_show=3" aria-busy="true" aria-label="Loading contributors"> <ul class="list-style-none "> <li class="mb-2 d-flex"> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> <div class="Skeleton Skeleton--text flex-1 flex-self-center f4">&nbsp;</div> </li> <li class="mb-2 d-flex"> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> <div class="Skeleton Skeleton--text flex-1 flex-self-center f4">&nbsp;</div> </li> <li class="mb-2 d-flex"> <div class="Skeleton avatar avatar-user mr-2" style="width:32px;height:32px;"></div> <div class="Skeleton Skeleton--text flex-1 flex-self-center f4">&nbsp;</div> </li> </ul> </include-fragment> </div> </div> <div class="BorderGrid-row"> <div class="BorderGrid-cell"> <h2 class="h4 mb-3">Languages</h2> <div class="mb-2"> <span data-view-component="true" class="Progress"> <span style="background-color:#4F5D95 !important;;width: 97.4%;" itemprop="keywords" data-view-component="true" class="Progress-item color-bg-success-emphasis"></span> <span style="background-color:#c6538c !important;;width: 1.1%;" itemprop="keywords" data-view-component="true" class="Progress-item color-bg-success-emphasis"></span> <span style="background-color:#e34c26 !important;;width: 1.1%;" itemprop="keywords" data-view-component="true" class="Progress-item color-bg-success-emphasis"></span> <span style="background-color:#f1e05a !important;;width: 0.4%;" itemprop="keywords" data-view-component="true" class="Progress-item color-bg-success-emphasis"></span> </span></div> <ul class="list-style-none"> <li class="d-inline"> <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3" href="/aimeos/map/search?l=php" data-ga-click="Repository, language stats search click, location:repo overview"> <svg style="color:#4F5D95;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill mr-2"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> <span class="color-fg-default text-bold mr-1">PHP</span> <span>97.4%</span> </a> </li> <li class="d-inline"> <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3" href="/aimeos/map/search?l=scss" data-ga-click="Repository, language stats search click, location:repo overview"> <svg style="color:#c6538c;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill mr-2"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> <span class="color-fg-default text-bold mr-1">SCSS</span> <span>1.1%</span> </a> </li> <li class="d-inline"> <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3" href="/aimeos/map/search?l=html" data-ga-click="Repository, language stats search click, location:repo overview"> <svg style="color:#e34c26;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill mr-2"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> <span class="color-fg-default text-bold mr-1">HTML</span> <span>1.1%</span> </a> </li> <li class="d-inline"> <a class="d-inline-flex flex-items-center flex-nowrap Link--secondary no-underline text-small mr-3" href="/aimeos/map/search?l=javascript" data-ga-click="Repository, language stats search click, location:repo overview"> <svg style="color:#f1e05a;" aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-dot-fill mr-2"> <path d="M8 4a4 4 0 1 1 0 8 4 4 0 0 1 0-8Z"></path> </svg> <span class="color-fg-default text-bold mr-1">JavaScript</span> <span>0.4%</span> </a> </li> </ul> </div> </div> </div> </div> </div></div> </div> </div> </turbo-frame> </main> </div> </div> <footer class="footer pt-8 pb-6 f6 color-fg-muted p-responsive" role="contentinfo" > <h2 class='sr-only'>Footer</h2> <div class="d-flex flex-justify-center flex-items-center flex-column-reverse flex-lg-row flex-wrap flex-lg-nowrap"> <div class="d-flex flex-items-center flex-shrink-0 mx-2"> <a aria-label="Homepage" title="GitHub" class="footer-octicon mr-2" href="https://github.com"> <svg aria-hidden="true" height="24" viewBox="0 0 24 24" version="1.1" width="24" data-view-component="true" class="octicon octicon-mark-github"> <path d="M12 1C5.9225 1 1 5.9225 1 12C1 16.8675 4.14875 20.9787 8.52125 22.4362C9.07125 22.5325 9.2775 22.2025 9.2775 21.9137C9.2775 21.6525 9.26375 20.7862 9.26375 19.865C6.5 20.3737 5.785 19.1912 5.565 18.5725C5.44125 18.2562 4.905 17.28 4.4375 17.0187C4.0525 16.8125 3.5025 16.3037 4.42375 16.29C5.29 16.2762 5.90875 17.0875 6.115 17.4175C7.105 19.0812 8.68625 18.6137 9.31875 18.325C9.415 17.61 9.70375 17.1287 10.02 16.8537C7.5725 16.5787 5.015 15.63 5.015 11.4225C5.015 10.2262 5.44125 9.23625 6.1425 8.46625C6.0325 8.19125 5.6475 7.06375 6.2525 5.55125C6.2525 5.55125 7.17375 5.2625 9.2775 6.67875C10.1575 6.43125 11.0925 6.3075 12.0275 6.3075C12.9625 6.3075 13.8975 6.43125 14.7775 6.67875C16.8813 5.24875 17.8025 5.55125 17.8025 5.55125C18.4075 7.06375 18.0225 8.19125 17.9125 8.46625C18.6138 9.23625 19.04 10.2125 19.04 11.4225C19.04 15.6437 16.4688 16.5787 14.0213 16.8537C14.42 17.1975 14.7638 17.8575 14.7638 18.8887C14.7638 20.36 14.75 21.5425 14.75 21.9137C14.75 22.2025 14.9563 22.5462 15.5063 22.4362C19.8513 20.9787 23 16.8537 23 12C23 5.9225 18.0775 1 12 1Z"></path> </svg> </a> <span> &copy; 2025 GitHub,&nbsp;Inc. </span> </div> <nav aria-label="Footer"> <h3 class="sr-only" id="sr-footer-heading">Footer navigation</h3> <ul class="list-style-none d-flex flex-justify-center flex-wrap mb-2 mb-lg-0" aria-labelledby="sr-footer-heading"> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to Terms&quot;,&quot;label&quot;:&quot;text:terms&quot;}" href="https://docs.github.com/site-policy/github-terms/github-terms-of-service" data-view-component="true" class="Link--secondary Link">Terms</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to privacy&quot;,&quot;label&quot;:&quot;text:privacy&quot;}" href="https://docs.github.com/site-policy/privacy-policies/github-privacy-statement" data-view-component="true" class="Link--secondary Link">Privacy</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to security&quot;,&quot;label&quot;:&quot;text:security&quot;}" href="https://github.com/security" data-view-component="true" class="Link--secondary Link">Security</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to status&quot;,&quot;label&quot;:&quot;text:status&quot;}" href="https://www.githubstatus.com/" data-view-component="true" class="Link--secondary Link">Status</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to docs&quot;,&quot;label&quot;:&quot;text:docs&quot;}" href="https://docs.github.com/" data-view-component="true" class="Link--secondary Link">Docs</a> </li> <li class="mx-2"> <a data-analytics-event="{&quot;category&quot;:&quot;Footer&quot;,&quot;action&quot;:&quot;go to contact&quot;,&quot;label&quot;:&quot;text:contact&quot;}" href="https://support.github.com?tags=dotcom-footer" data-view-component="true" class="Link--secondary Link">Contact</a> </li> <li class="mx-2" > <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;cookies&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;cookies_link_subfooter_footer&quot;}" > Manage cookies </button> </cookie-consent-link> </li> <li class="mx-2"> <cookie-consent-link> <button type="button" class="Link--secondary underline-on-hover border-0 p-0 color-bg-transparent" data-action="click:cookie-consent-link#showConsentManagement" data-analytics-event="{&quot;location&quot;:&quot;footer&quot;,&quot;action&quot;:&quot;dont_share_info&quot;,&quot;context&quot;:&quot;subfooter&quot;,&quot;tag&quot;:&quot;link&quot;,&quot;label&quot;:&quot;dont_share_info_link_subfooter_footer&quot;}" > Do not share my personal information </button> </cookie-consent-link> </li> </ul> </nav> </div> </footer> <ghcc-consent id="ghcc" class="position-fixed bottom-0 left-0" style="z-index: 999999" data-initial-cookie-consent-allowed="" data-cookie-consent-required="false"></ghcc-consent> <div id="ajax-error-message" class="ajax-error-message flash flash-error" hidden> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-alert"> <path d="M6.457 1.047c.659-1.234 2.427-1.234 3.086 0l6.082 11.378A1.75 1.75 0 0 1 14.082 15H1.918a1.75 1.75 0 0 1-1.543-2.575Zm1.763.707a.25.25 0 0 0-.44 0L1.698 13.132a.25.25 0 0 0 .22.368h12.164a.25.25 0 0 0 .22-.368Zm.53 3.996v2.5a.75.75 0 0 1-1.5 0v-2.5a.75.75 0 0 1 1.5 0ZM9 11a1 1 0 1 1-2 0 1 1 0 0 1 2 0Z"></path> </svg> <button type="button" class="flash-close js-ajax-error-dismiss" aria-label="Dismiss error"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> You can’t perform that action at this time. </div> <template id="site-details-dialog"> <details class="details-reset details-overlay details-overlay-dark lh-default color-fg-default hx_rsm" open> <summary role="button" aria-label="Close dialog"></summary> <details-dialog class="Box Box--overlay d-flex flex-column anim-fade-in fast hx_rsm-dialog hx_rsm-modal"> <button class="Box-btn-octicon m-0 btn-octicon position-absolute right-0 top-0" type="button" aria-label="Close dialog" data-close-dialog> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-x"> <path d="M3.72 3.72a.75.75 0 0 1 1.06 0L8 6.94l3.22-3.22a.749.749 0 0 1 1.275.326.749.749 0 0 1-.215.734L9.06 8l3.22 3.22a.749.749 0 0 1-.326 1.275.749.749 0 0 1-.734-.215L8 9.06l-3.22 3.22a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042L6.94 8 3.72 4.78a.75.75 0 0 1 0-1.06Z"></path> </svg> </button> <div class="octocat-spinner my-6 js-details-dialog-spinner"></div> </details-dialog> </details> </template> <div class="Popover js-hovercard-content position-absolute" style="display: none; outline: none;"> <div class="Popover-message Popover-message--bottom-left Popover-message--large Box color-shadow-large" style="width:360px;"> </div> </div> <template id="snippet-clipboard-copy-button"> <div class="zeroclipboard-container position-absolute right-0 top-0"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn js-clipboard-copy m-2 p-0" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon m-2"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none m-2"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> <template id="snippet-clipboard-copy-button-unpositioned"> <div class="zeroclipboard-container"> <clipboard-copy aria-label="Copy" class="ClipboardButton btn btn-invisible js-clipboard-copy m-2 p-0 d-flex flex-justify-center flex-items-center" data-copy-feedback="Copied!" data-tooltip-direction="w"> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-copy js-clipboard-copy-icon"> <path d="M0 6.75C0 5.784.784 5 1.75 5h1.5a.75.75 0 0 1 0 1.5h-1.5a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-1.5a.75.75 0 0 1 1.5 0v1.5A1.75 1.75 0 0 1 9.25 16h-7.5A1.75 1.75 0 0 1 0 14.25Z"></path><path d="M5 1.75C5 .784 5.784 0 6.75 0h7.5C15.216 0 16 .784 16 1.75v7.5A1.75 1.75 0 0 1 14.25 11h-7.5A1.75 1.75 0 0 1 5 9.25Zm1.75-.25a.25.25 0 0 0-.25.25v7.5c0 .138.112.25.25.25h7.5a.25.25 0 0 0 .25-.25v-7.5a.25.25 0 0 0-.25-.25Z"></path> </svg> <svg aria-hidden="true" height="16" viewBox="0 0 16 16" version="1.1" width="16" data-view-component="true" class="octicon octicon-check js-clipboard-check-icon color-fg-success d-none"> <path d="M13.78 4.22a.75.75 0 0 1 0 1.06l-7.25 7.25a.75.75 0 0 1-1.06 0L2.22 9.28a.751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018L6 10.94l6.72-6.72a.75.75 0 0 1 1.06 0Z"></path> </svg> </clipboard-copy> </div> </template> </div> <div id="js-global-screen-reader-notice" class="sr-only mt-n1" aria-live="polite" aria-atomic="true" ></div> <div id="js-global-screen-reader-notice-assertive" class="sr-only mt-n1" aria-live="assertive" aria-atomic="true"></div> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10