2017-09-29 39 views
5

php 7.2 ile her biri kullanımdan kaldırılacak, bu talimatlar kullanımdan kaldırılanlara nasıl değiştirilir?Bu kullanımdan kaldırılmış işlev her bir php ile nasıl çözülür

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); 

ederiz yo u.

cevap

3

İlk iki Örneğin durumlarda, key'u kullanabilirsiniz. İhtiyacınız olan değerleri atamak için d current. Bu durumlarda

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

    1. , sen daha sonra imleci ilerletmek için next kullanabilirsiniz, ancak sizin kodun kalan o bağımlı değildir eğer gerekli olmayabilir.

      Üçüncü durumda, bunun yerine yalnızca foreach döngüsünü kullanmanızı ve döngünün içinde $kv atamasını öneririm. Anahtar list göz ardı edilmektedir gibi son durum için

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

      , görünüşe, bu yüzden şimdiki değeri atayabilirsiniz. İlk iki durumda gibi
      $this->result = current($this->cache_data); 
      

      , kodun kalan $this->cache_data nasıl etkileşimde bağlı next ile imleci ilerletmek için gerekli olabilir.

    +0

    Tamam, tk, ben tanımlayıcımdan son bir durum ekledim. – yokogeri

    +0

    @yokogeri Ben cevapta bunu ele aldım. –

    1

    key(), current() ve next() ile kendi each() işlevinizi oluşturabilirsiniz. sonra böyle o fonksiyonu ile aramalarınızı değiştirin:

    <?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

    Her birini tam olarak taklit etmek isterseniz, çıktıdaki "anahtar" ve "değer" tuşlarının yanı sıra 0 ve 1'e de ihtiyacınız olacağını tahmin ediyorum. –

    +0

    @ Don'tPanic, düzenlendi answer, bu durum ona ihtiyacım var ama orada olabilecek durumlar olabilir. öneri –

    +0

    için teşekkürler Peki, ilk durumda kesinlikle buna gerek yoktu. İkinci iki vakada, 'beklenen' ve '$ kv' dizilerinin nasıl kullanıldığını kesin olarak bilemeyiz. Benim cevabımda bu konuya değinmedim;) –