2017-09-29 25 views
5

W przypadku php 7.2, każdy będzie przestarzały, jak zmienić te instrukcje na niezastrzeżone?Jak rozwiązać tę nieaktualną funkcję dla każdego php

1.

$ar = $o->me; 
reset($ar); 
list($typ, $val) = each($ar); 

2.

$out = array('me' => array(), 'mytype' => 2, '_php_class' => null); 
$expected = each($out); 

3.

for(reset($broken);$kv = each($broken);) {...} 

4.

list(, $this->result) = each($this->cache_data); 

Dziękuję yo u.

Odpowiedz

3

Dla dwóch pierwszych przykład przypadki, możesz użyć key an d current, aby przypisać potrzebne wartości.

  1. $ar = $o->me; // reset isn't necessary, since you just created the array 
    $typ = key($ar); 
    $val = current($ar); 
    
  2. $out = array('me' => array(), 'mytype' => 2, '_php_class' => null); 
    $expected = [key($out), current($out)]; 
    

W takich przypadkach można użyć next aby przesunąć kursor potem, ale to może nie być konieczne, jeśli reszta kodu nie zależy na tym.

W trzecim przypadku sugeruję użycie zamiast tego pętli foreach i przypisanie w pętli $kv.

foreach ($broken as $k => $v) { 
    $kv = [$k, $v]; 
} 

W ostatnim przypadku, wygląda jak klucz jest pomijane w list, więc można przypisać bieżącą wartość.

$this->result = current($this->cache_data); 

Podobnie jak w pierwszych dwóch przypadkach może być konieczne, aby przesunąć kursor z next zależności od tego jak reszta kodu współdziała z $this->cache_data.

+0

Ok, tkam, dodałem ostatni przypadek niż identyfikator. – yokogeri

+0

@yokogeri Zaadresowałem to w odpowiedzi. –

1

można utworzyć własną funkcję each() przy użyciu key(), current() i next(). następnie zastąpić połączeniami z tej funkcji, na przykład:

<?php 
function myEach(&$arr) { 
    $key = key($arr); 
    $result = ($key === null) ? false : [$key, current($arr), 'key' => $key, 'value' => current($arr)]; 
    next($arr); 
    return $result; 
} 

1.

$ar = $o->me; 
reset($ar); 
list($typ, $val) = myEach($ar); 

2.

$out = array('me' => array(), 'mytype' => 2, '_php_class' => null); 
$expected = myEach($out); 

3.

for(reset($broken);$kv = myEach($broken);) {...} 
+0

Jeśli chcesz w pełni naśladować każdy, myślę, że trzeba się „klucz” i „wartość” klucze w wyjściu jak 0 i 1. –

+0

@ Don'tPanic pod redakcją odpowiedź, ta sytuacja nie Potrzebuję go, ale mogą istnieć przypadki, które mogą. dzięki za sugestię –

+0

Cóż, pierwszy przypadek zdecydowanie go nie potrzebował. W dwóch pozostałych przypadkach nie możemy być pewni, w jaki sposób wykorzystywane są tablice '$ expected' i' $ kv', więc mogą. Nie, żebym odpowiedział na to w mojej odpowiedzi;) –