===== PHP ===== ==== Les chaînes de caractères ==== === Une chaîne déclarée en multilignes === $body = <<< 'EOF' Ceci est une chaîne écrite en plusieurs lignes. EOF; ==== Les tableaux ==== === Vérifier si un tableau est associatif === function isAssoc(array $array): bool { if (array() === $array) return false; return array_keys($array) !== range(0, count($array) - 1); } === Rechercher dans un tableau associatif === $people = array( 2 => array( 'name' => 'John', 'fav_color' => 'green' ), 5=> array( 'name' => 'Samuel', 'fav_color' => 'blue' ) ); $found_key = array_search('blue', array_column($people, 'fav_color')); Attention, ça renvoie 1 et non 5 (c'est le 2ème élément du tableau). Pour un gros tableau, il faut optimiser : $colors = array_column($people, 'fav_color'); $found_key = array_search('blue', $colors); === Remplacer les clés d'un tableau === $array = ['aaa', 'bbb']; $keys = ['key1', 'key2']; $newArray = array_combine(array_map(function($el) use ($keys) { return $keys[$el]; }, array_keys($array)), array_values($array)); === Tri multi-critères === usort ($rows, function ($a, $b) { $cmpAll = 0; // code_etape . version $cmp_code_etape_version = strcmp($a->code_etape . $a->version, $b->code_etape . $b->version); $cmpAll += $cmp_code_etape_version == 0 ? 0 : ($cmp_code_etape_version > 1 ? 1 : -1) * 1000000; // nature BLCC $cmpAll += (($b->nature == 'BLCC' ? 1 : 0) - ($a->nature == 'BLCC' ? 1 : 0)) * 100000; // nature BLCA $cmpAll += (($b->nature == 'BLCA' ? 1 : 0) - ($a->nature == 'BLCA' ? 1 : 0)) * 10000; // nature SEM $cmpAll += (($b->nature == 'SEM' ? 1 : 0) - ($a->nature == 'SEM' ? 1 : 0)) * 1000; // code_UE_mere $cmp_code_UE_mere = strcmp($a->code_UE_mere, $b->code_UE_mere); $cmpAll += ($cmp_code_UE_mere == 0 ? 0 : ($cmp_code_UE_mere > 0 ? 1 : -1)) * 10; // code_UE_fille $cmp_code_UE_fille = strcmp($a->code_UE_fille, $b->code_UE_fille); $cmpAll += ($cmp_code_UE_fille == 0 ? 0 : ($cmp_code_UE_fille > 0 ? 1 : -1)); return $cmpAll; }); Variante PHP8 usort ($rows, function ($a, $b) { return ( // code_etape . version ($a->code_etape . $a->version <=> $b->code_etape . $b->version) * 1000000 + // nature BLCC (($b->nature == 'BLCC' ? 1 : 0) - ($a->nature == 'BLCC' ? 1 : 0)) * 100000 + // nature BLCA (($b->nature == 'BLCA' ? 1 : 0) - ($a->nature == 'BLCA' ? 1 : 0)) * 10000 + // nature SEM (($b->nature == 'SEM' ? 1 : 0) - ($a->nature == 'SEM' ? 1 : 0)) * 1000 + // nature ($a->nature <=> $b->nature) * 100 + // code_UE_mere ($a->code_UE_mere <=> $b->code_UE_mere) * 10 + // code_UE_fille ($a->code_UE_fille <=> $b->code_UE_fille) ); }); Variante plus élégante usort ($rows, function ($a, $b) { return ( $p = 0; // code_UE_fille ($a->code_UE_fille <=> $b->code_UE_fille) * pow(10, $p++) + // code_UE_mere ($a->code_UE_mere <=> $b->code_UE_mere) * pow(10, $p++) + // nature ($a->nature <=> $b->nature) * pow(10, $p++) + // nature SEM (($b->nature == 'SEM' ? 1 : 0) - ($a->nature == 'SEM' ? 1 : 0)) * pow(10, $p++) + // nature BLCA (($b->nature == 'BLCA' ? 1 : 0) - ($a->nature == 'BLCA' ? 1 : 0)) * pow(10, $p++) + // nature BLCC (($b->nature == 'BLCC' ? 1 : 0) - ($a->nature == 'BLCC' ? 1 : 0)) * pow(10, $p++) + // code_etape . version ($a->code_etape . $a->version <=> $b->code_etape . $b->version) * pow(10, $p++) + ); }); ==== Les dates ==== === Le format par défaut === 'Y-m-d\\TH:i:sP' == Exemple == $dateStr = '1979-09-05T11:27:04+02:00'; $date = DateTime::createFromFormat('Y-m-d\\TH:i:sP', $dateStr); ==== Débugging ==== === var_dump() sur de longues variables === ini_set("xdebug.var_display_max_children", '-1'); ini_set("xdebug.var_display_max_data", '-1'); ini_set("xdebug.var_display_max_depth", '-1'); var_dump($var); ==== Divers ==== === Installer Composer rapidement === curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer