Changeset 93109 in spip-zone


Ignore:
Timestamp:
Nov 23, 2015, 1:36:17 PM (5 years ago)
Author:
marcimat@…
Message:

Compat PHP7 (peut être pas encore suffisant).

La structure foreach change de comportement et s'applique par défaut sur une copie du tableau passé.
Si on modifie le tableau dans le foreach… bien celui d'origine n'est pas affecté. Pour retrouver
le comportement d'avant dans ces cas là, il faut passer la valeur par référence.

cf.
https://wiki.php.net/rfc/php7_foreach
http://php.net/manual/fr/migration70.incompatible.php

File:
1 edited

Legend:

Unmodified
Added
Removed
  • _core_/plugins/porte_plume/porte_plume_fonctions.php

    r93108 r93109  
    223223                // present en premiere ligne ?
    224224                $trouve = false;
    225                 foreach ($tableau as $i=>$v){
     225                foreach ($tableau as $i => $v){
    226226                        if (isset($v[$cle_de_recherche]) and ($v[$cle_de_recherche] == $identifiant)) {
    227227                                $trouve = $i;
     
    256256
    257257                // recursivons sinon !
    258                 foreach ($tableau as $i=>$v){
     258                foreach ($tableau as $i => $v){
    259259                        if (is_array($v)) {
    260                                 foreach ($v as $m=>$n) {
     260                                foreach ($v as $m => $n) {
    261261                                        if (is_array($n) AND ($r = $this->affecter($tableau[$i][$m], $identifiant, $params, $lieu, $plusieurs)))
    262262                                                return $r;
     
    292292
    293293                // merge de premiere ligne
    294                 foreach ($tableau as $i=>$v){
     294                foreach ($tableau as $i => &$v){
    295295                        if (!$ids OR in_array($v['id'], $ids)) {
    296296                                $tableau[$i] = array_merge($tableau[$i], $params);
     
    494494         */
    495495        function enlever_elements_non_affiches(&$tableau){
    496                 if ($tableau === null) // utile ?
     496                if ($tableau === null) { // utile ?
    497497                        $tableau = &$this->markupSet;
    498 
    499                 foreach ($tableau as $p=>$v) {
    500 
     498                }
     499
     500                foreach ($tableau as $p => &$v) {
    501501                        if (isset($v['display']) AND !$v['display']) {
    502502                                unset($tableau[$p]);
     
    530530        **/
    531531        function enlever_separateurs(&$tableau) {
    532                 if ($tableau === null) // utile ?
     532                if ($tableau === null) { // utile ?
    533533                        $tableau = &$this->markupSet;
    534 
    535                 foreach ($tableau as $p=>$v) {
     534                }
     535
     536
     537                foreach ($tableau as $p => &$v) {
    536538                        if (isset($v['separator']) and $v['separator']) {
    537539                                if (isset($tableau[$p-1])) {
Note: See TracChangeset for help on using the changeset viewer.