array_map('reset' provoque un warning en PHP 8.1 sur les plugins dictionnaires et acces_restreint

Bonjour,

Exemple, la ligne 70 de inc/dictionnaires.php :
$dicos_actifs = array_map('reset', $dicos_actifs);

Je suis tombé sur ce site How to use array_map with reset callback in php 8 qui m’a permis de corriger en :
$dicos_actifs = array_map(function($v) { return reset($v); }, $dicos_actifs);

Est-ce que c’est la bonne méthode ?

la plupart du temps on utilisait cette construction pour faire ce qui désormais correspond à

$dicos_actifs = array_column($dicos_actifs, <nom d'une colonne sql>);

Il faut voir en contexte la raison d’être de ce array_map, pour voir ce qu’on veut vraiment récuperer.

Je n’en ai aucune idée :frowning:
Et je dois avouer que les tableaux en général en PHP, je trouve ça plus compliqué que les regexp :wink:

Comme tu vois tu as ‹ id_dictionnaire › de sélectionné dans le sql_allfetsel.
C’est donc $dicos_actifs = array_column($dicos_actifs, 'id_dictionnaire'); ici pour ce que tu veux.

Merci @marcimat
Commité : Un warning en PHP 8.1 · b7fc56236a - dictionnaires - SPIP on GIT

Ah tiens sur le github de Laravel j’ai trouvé un remplacement avec
array_map('current', $autres_abonnements_actifs);

cf https://www.php.net/manual/fr/function.current.php

C’est mieux d’utiliser array_column @touti ;

Tu trouveras plein de remplacements par ça un peu partout dans SPIP et les plugins. Par exemple