{"id":384,"date":"2018-07-20T18:09:14","date_gmt":"2018-07-20T16:09:14","guid":{"rendered":"https:\/\/numa-bord.com\/miniblog\/?p=384"},"modified":"2018-07-20T18:13:11","modified_gmt":"2018-07-20T16:13:11","slug":"php-classer-un-tableau-dobjets-avec-usort","status":"publish","type":"post","link":"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/","title":{"rendered":"PHP : classer un tableau d\u2019objets avec usort"},"content":{"rendered":"<p>En PHP il arrive de se retrouver avec un tableau d\u2019objets qui n&rsquo;est pas ordonn\u00e9 comme on le voudrait, il faut dans ce cas utiliser la fonction <a href=\"http:\/\/php.net\/manual\/fr\/function.usort.php\">usort<\/a> qui permet de trier un tableau en utilisant une fonction de comparaison.<\/p>\n<p><p>Imaginons nous avons un tableau \u00ab\u00a0$list\u00a0\u00bb d&rsquo;objets \u00ab\u00a0User\u00a0\u00bb, contenant -entre autre- les propri\u00e9t\u00e9s \u00ab\u00a0Date\u00a0\u00bb et \u00ab\u00a0Name\u00a0\u00bb, Date \u00e9tant un objet DateTime et Name un string<\/p>\n<p>Pour trier par date il faut cr\u00e9er et appeler la fonction suivante (l&rsquo;exemple peux s&rsquo;appliquer \u00e0 n&rsquo;importe quel tri)<\/p>\n<div class=\"codecolorer-container php default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"php codecolorer\"><span class=\"co1\">\/\/on d\u00e9clare la fonction de tri<\/span><br \/>\norderByDate<span class=\"br0\">&#40;<\/span><span class=\"re0\">$a<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$b<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"co1\">\/\/retourner 0 en cas d'\u00e9galit\u00e9<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$a<\/span><span class=\"sy0\">-&gt;<\/span><a href=\"http:\/\/www.php.net\/date\"><span class=\"kw3\">date<\/span><\/a> <span class=\"sy0\">==<\/span> <span class=\"re0\">$b<\/span><span class=\"sy0\">-&gt;<\/span><a href=\"http:\/\/www.php.net\/date\"><span class=\"kw3\">date<\/span><\/a><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"nu0\">0<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"kw1\">if<\/span> <span class=\"br0\">&#40;<\/span><span class=\"re0\">$a<\/span><span class=\"sy0\">-&gt;<\/span><a href=\"http:\/\/www.php.net\/date\"><span class=\"kw3\">date<\/span><\/a> <span class=\"sy0\">&lt;<\/span> <span class=\"re0\">$b<\/span><span class=\"sy0\">-&gt;<\/span><a href=\"http:\/\/www.php.net\/date\"><span class=\"kw3\">date<\/span><\/a><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><span class=\"co1\">\/\/retourner -1 en cas d\u2019inf\u00e9riorit\u00e9<\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"sy0\">-<\/span><span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span> <span class=\"kw1\">else<\/span> <span class=\"br0\">&#123;<\/span><span class=\"co1\">\/\/retourner 1 en cas de sup\u00e9riorit\u00e9 <\/span><br \/>\n&nbsp; &nbsp; &nbsp; &nbsp; <span class=\"kw1\">return<\/span> <span class=\"nu0\">1<\/span><span class=\"sy0\">;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"co1\">\/\/appel de la fonction avec notre tableau $list, $list contiendra ensuite les &quot;User&quot; tri\u00e9 par date.<\/span><br \/>\n<a href=\"http:\/\/www.php.net\/usort\"><span class=\"kw3\">usort<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$list<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;orderByDate&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>Si votre fonction est dans une classe et que vous l&rsquo;utilisez depuis cette m\u00eame classe, il faut l&rsquo;appeler comme ceci : <\/p>\n<div class=\"codecolorer-container php default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"php codecolorer\"><a href=\"http:\/\/www.php.net\/usort\"><span class=\"kw3\">usort<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$list<\/span><span class=\"sy0\">,<\/span> <a href=\"http:\/\/www.php.net\/array\"><span class=\"kw3\">array<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$this<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;orderByDate&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n<p>Dans le cas d&rsquo;une comparaison de chaine (comme par exemple ici sur le nom) on peux simplifier la syntaxe en utilisant la fonction <a href=\"http:\/\/php.net\/manual\/fr\/function.strcmp.php\">strcmp<\/a> de la mani\u00e8re suivante : <\/p>\n<div class=\"codecolorer-container php default\" style=\"overflow:auto;white-space:nowrap;\"><div class=\"php codecolorer\"><span class=\"co1\">\/\/on d\u00e9clare la fonction<\/span><br \/>\norderByName<span class=\"br0\">&#40;<\/span><span class=\"re0\">$a<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$b<\/span><span class=\"br0\">&#41;<\/span> <span class=\"br0\">&#123;<\/span><br \/>\n&nbsp; &nbsp; <span class=\"kw1\">return<\/span> <a href=\"http:\/\/www.php.net\/strcmp\"><span class=\"kw3\">strcmp<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$a<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">name<\/span><span class=\"sy0\">,<\/span> <span class=\"re0\">$b<\/span><span class=\"sy0\">-&gt;<\/span><span class=\"me1\">name<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><br \/>\n<span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"co1\">\/\/appel de la fonction<\/span><br \/>\n<a href=\"http:\/\/www.php.net\/usort\"><span class=\"kw3\">usort<\/span><\/a><span class=\"br0\">&#40;<\/span><span class=\"re0\">$list<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">&quot;orderByName&quot;<\/span><span class=\"br0\">&#41;<\/span><span class=\"sy0\">;<\/span><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"<p>En PHP il arrive de se retrouver avec un tableau d\u2019objets qui n&rsquo;est pas ordonn\u00e9 comme on le voudrait, il faut dans ce cas utiliser la fonction usort qui permet de trier un tableau en utilisant une fonction de comparaison. Imaginons nous avons un tableau \u00ab\u00a0$list\u00a0\u00bb d&rsquo;objets \u00ab\u00a0User\u00a0\u00bb, contenant -entre autre- les propri\u00e9t\u00e9s \u00ab\u00a0Date\u00a0\u00bb et [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2,7],"tags":[],"class_list":["post-384","post","type-post","status-publish","format-standard","hentry","category-developpement","category-php"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>PHP : classer un tableau d\u2019objets avec usort - Pense b\u00eate d&#039;un d\u00e9veloppeur web<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"PHP : classer un tableau d\u2019objets avec usort - Pense b\u00eate d&#039;un d\u00e9veloppeur web\" \/>\n<meta property=\"og:description\" content=\"En PHP il arrive de se retrouver avec un tableau d\u2019objets qui n&rsquo;est pas ordonn\u00e9 comme on le voudrait, il faut dans ce cas utiliser la fonction usort qui permet de trier un tableau en utilisant une fonction de comparaison. Imaginons nous avons un tableau \u00ab\u00a0$list\u00a0\u00bb d&rsquo;objets \u00ab\u00a0User\u00a0\u00bb, contenant -entre autre- les propri\u00e9t\u00e9s \u00ab\u00a0Date\u00a0\u00bb et [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/\" \/>\n<meta property=\"og:site_name\" content=\"Pense b\u00eate d&#039;un d\u00e9veloppeur web\" \/>\n<meta property=\"article:published_time\" content=\"2018-07-20T16:09:14+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2018-07-20T16:13:11+00:00\" \/>\n<meta name=\"author\" content=\"Numa\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u00c9crit par\" \/>\n\t<meta name=\"twitter:data1\" content=\"Numa\" \/>\n\t<meta name=\"twitter:label2\" content=\"Dur\u00e9e de lecture estim\u00e9e\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/\"},\"author\":{\"name\":\"Numa\",\"@id\":\"https:\/\/numa-bord.com\/miniblog\/#\/schema\/person\/f9d00acd1703f17e5a6895283eb46a7e\"},\"headline\":\"PHP : classer un tableau d\u2019objets avec usort\",\"datePublished\":\"2018-07-20T16:09:14+00:00\",\"dateModified\":\"2018-07-20T16:13:11+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/\"},\"wordCount\":254,\"commentCount\":0,\"articleSection\":[\"D\u00e9veloppement\",\"PHP\"],\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/\",\"url\":\"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/\",\"name\":\"PHP : classer un tableau d\u2019objets avec usort - Pense b\u00eate d&#039;un d\u00e9veloppeur web\",\"isPartOf\":{\"@id\":\"https:\/\/numa-bord.com\/miniblog\/#website\"},\"datePublished\":\"2018-07-20T16:09:14+00:00\",\"dateModified\":\"2018-07-20T16:13:11+00:00\",\"author\":{\"@id\":\"https:\/\/numa-bord.com\/miniblog\/#\/schema\/person\/f9d00acd1703f17e5a6895283eb46a7e\"},\"breadcrumb\":{\"@id\":\"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Accueil\",\"item\":\"https:\/\/numa-bord.com\/miniblog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"PHP : classer un tableau d\u2019objets avec usort\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/numa-bord.com\/miniblog\/#website\",\"url\":\"https:\/\/numa-bord.com\/miniblog\/\",\"name\":\"Pense b\u00eate d&#039;un d\u00e9veloppeur web\",\"description\":\"(php, javascript, Symfony, Wordpress....)\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/numa-bord.com\/miniblog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/numa-bord.com\/miniblog\/#\/schema\/person\/f9d00acd1703f17e5a6895283eb46a7e\",\"name\":\"Numa\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"fr-FR\",\"@id\":\"https:\/\/secure.gravatar.com\/avatar\/f21d1af4658a7106211915940584534c1e0b3eef3f12eb67a697686cad70b64a?s=96&d=mm&r=g\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/f21d1af4658a7106211915940584534c1e0b3eef3f12eb67a697686cad70b64a?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/f21d1af4658a7106211915940584534c1e0b3eef3f12eb67a697686cad70b64a?s=96&d=mm&r=g\",\"caption\":\"Numa\"},\"url\":\"https:\/\/numa-bord.com\/miniblog\/author\/negonner\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"PHP : classer un tableau d\u2019objets avec usort - Pense b\u00eate d&#039;un d\u00e9veloppeur web","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/","og_locale":"fr_FR","og_type":"article","og_title":"PHP : classer un tableau d\u2019objets avec usort - Pense b\u00eate d&#039;un d\u00e9veloppeur web","og_description":"En PHP il arrive de se retrouver avec un tableau d\u2019objets qui n&rsquo;est pas ordonn\u00e9 comme on le voudrait, il faut dans ce cas utiliser la fonction usort qui permet de trier un tableau en utilisant une fonction de comparaison. Imaginons nous avons un tableau \u00ab\u00a0$list\u00a0\u00bb d&rsquo;objets \u00ab\u00a0User\u00a0\u00bb, contenant -entre autre- les propri\u00e9t\u00e9s \u00ab\u00a0Date\u00a0\u00bb et [&hellip;]","og_url":"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/","og_site_name":"Pense b\u00eate d&#039;un d\u00e9veloppeur web","article_published_time":"2018-07-20T16:09:14+00:00","article_modified_time":"2018-07-20T16:13:11+00:00","author":"Numa","twitter_card":"summary_large_image","twitter_misc":{"\u00c9crit par":"Numa","Dur\u00e9e de lecture estim\u00e9e":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/#article","isPartOf":{"@id":"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/"},"author":{"name":"Numa","@id":"https:\/\/numa-bord.com\/miniblog\/#\/schema\/person\/f9d00acd1703f17e5a6895283eb46a7e"},"headline":"PHP : classer un tableau d\u2019objets avec usort","datePublished":"2018-07-20T16:09:14+00:00","dateModified":"2018-07-20T16:13:11+00:00","mainEntityOfPage":{"@id":"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/"},"wordCount":254,"commentCount":0,"articleSection":["D\u00e9veloppement","PHP"],"inLanguage":"fr-FR","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/","url":"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/","name":"PHP : classer un tableau d\u2019objets avec usort - Pense b\u00eate d&#039;un d\u00e9veloppeur web","isPartOf":{"@id":"https:\/\/numa-bord.com\/miniblog\/#website"},"datePublished":"2018-07-20T16:09:14+00:00","dateModified":"2018-07-20T16:13:11+00:00","author":{"@id":"https:\/\/numa-bord.com\/miniblog\/#\/schema\/person\/f9d00acd1703f17e5a6895283eb46a7e"},"breadcrumb":{"@id":"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/numa-bord.com\/miniblog\/php-classer-un-tableau-dobjets-avec-usort\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Accueil","item":"https:\/\/numa-bord.com\/miniblog\/"},{"@type":"ListItem","position":2,"name":"PHP : classer un tableau d\u2019objets avec usort"}]},{"@type":"WebSite","@id":"https:\/\/numa-bord.com\/miniblog\/#website","url":"https:\/\/numa-bord.com\/miniblog\/","name":"Pense b\u00eate d&#039;un d\u00e9veloppeur web","description":"(php, javascript, Symfony, Wordpress....)","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/numa-bord.com\/miniblog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"},{"@type":"Person","@id":"https:\/\/numa-bord.com\/miniblog\/#\/schema\/person\/f9d00acd1703f17e5a6895283eb46a7e","name":"Numa","image":{"@type":"ImageObject","inLanguage":"fr-FR","@id":"https:\/\/secure.gravatar.com\/avatar\/f21d1af4658a7106211915940584534c1e0b3eef3f12eb67a697686cad70b64a?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/f21d1af4658a7106211915940584534c1e0b3eef3f12eb67a697686cad70b64a?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/f21d1af4658a7106211915940584534c1e0b3eef3f12eb67a697686cad70b64a?s=96&d=mm&r=g","caption":"Numa"},"url":"https:\/\/numa-bord.com\/miniblog\/author\/negonner\/"}]}},"_links":{"self":[{"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/posts\/384","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/comments?post=384"}],"version-history":[{"count":10,"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/posts\/384\/revisions"}],"predecessor-version":[{"id":397,"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/posts\/384\/revisions\/397"}],"wp:attachment":[{"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/media?parent=384"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/categories?post=384"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/numa-bord.com\/miniblog\/wp-json\/wp\/v2\/tags?post=384"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}