2017-09-29 8 views
5

php 7.2 के साथ, प्रत्येक को बहिष्कृत किया जाएगा, इन निर्देशों को गैर बहिष्कृत करने के लिए कैसे बदला जाए?इस बहिष्कृत फ़ंक्शन को कैसे हल करें प्रत्येक 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); 

धन्यवाद यो यू।

उत्तर

3

: तो अपने कॉल इस तरह, कि समारोह के साथ बदलें मामले, आप key ए का उपयोग कर सकते हैं डी current आपको आवश्यक मूल्यों को असाइन करने के लिए।

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

उन मामलों में, आप next का उपयोग बाद में कर्सर अग्रिम करने के लिए कर सकते हैं, लेकिन यह आवश्यक हो तो अपने कोड के बाकी है कि पर निर्भर नहीं करता नहीं हो सकता।

तीसरे मामले के लिए, मैं केवल लूप के अंदर एक फ़ोरैच लूप का उपयोग करने और $kv असाइन करने का सुझाव दूंगा।

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

पिछले मामले के लिए, यह चाबी की तरह list में ध्यान नहीं दिया जाता है, ताकि आप वर्तमान मूल्य प्रदान कर सकते हैं।

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

पहले दो मामलों की तरह, यह कैसे अपने कोड के बाकी $this->cache_data साथ सूचना का आदान पर निर्भर करता है next साथ कर्सर अग्रिम करने के लिए आवश्यक हो सकता है।

+0

ठीक है, आप टीके, मैंने पहचानकर्ता की तुलना में एक अंतिम मामला जोड़ा। – yokogeri

+0

@ योकोगेरी मैंने जवाब में जवाब दिया। –

1

आप key(), current() और next() का उपयोग करके अपना खुद का each() फ़ंक्शन बना सकते हैं। अपने पहले दो उदाहरण के लिए

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

यदि आप प्रत्येक को पूरी तरह से अनुकरण करना चाहते हैं, तो मुझे लगता है कि आपको आउटपुट में "कुंजी" और "मान" कुंजी की आवश्यकता होगी और साथ ही 0 और 1. –

+0

@ Don'tPanic, संपादित उत्तर नहीं, यह स्थिति नहीं थी इसकी आवश्यकता है लेकिन वहां ऐसे मामले हो सकते हैं जो हो सकता है। सुझाव –

+0

के लिए धन्यवाद ठीक है, पहले मामले को निश्चित रूप से इसकी आवश्यकता नहीं थी। दूसरे दो मामले, हम यह सुनिश्चित करने के लिए नहीं जानते कि '$ अपेक्षित 'और' $ केवी' सरणी का उपयोग कैसे किया जाता है, इसलिए वे हो सकते हैं। ऐसा नहीं है कि मैंने अपने जवाब में या तो संबोधित किया;) –

संबंधित मुद्दे