‎‎تكرارپذيريPHP Iterables -‎

Previous >    <Next  

‎داده تكرار پذير داده ايست كه بتوان آنرا بوسيله‎foreach()‎‎ دور زد .بعنوان مثال ‎آرايه از آن نوع ميباشد.

‎درphp7.1 يك شبه نوع داده بنام ‎iterable‎ معرفي شد، كه در پارامتر توابع و مقدار ‎برگشتي توابع استفاده ميگردد.

‎‎بكار گيري تكرارپذيريUsing Iterables -‎

‎كلمه كليدي‎iterable‎ ميتواند براي معرفي نوع داده آرگومان تابع، يا نوع برگشتي ‎آن استفاده گردد.

‎‎مثال ـ بگار گيريiterable در آرگومان تابع

<?php 
function printIterable($myIterable) {
  foreach($myIterable as $item) {
    echo $item;
  }
}

$arr = ["a", "b", "c"];
printIterable($arr);
?> 

--(go to editor for change code and run)

‎نكته ـ اين امكان برايphp7.1 به بالاست ونسخه هاي پائين تر خطا ميگيرند .ميتوانيد براي نسخ ‎پائين كلمه را حذف كنيد واجرا را مشاهده نمائيد.

‎‎مثال ـiterable در برگشت تابع

<?php 
function getIterable():iterable {
  return ["a", "b", "c"];
}

$myIterable = getIterable();
foreach($myIterable as $item) {
  echo $item;
}
?>

--(go to editor for change code and run)

‎‎ايجاد داده تكرار پذيرPHP -‎ Creating Iterables

‎آرايه ها ـ همه آرايه ها تكرار پذير هستند، بنابراين آنها ميتوانند آرگومان توابعي باشند ‎كه آنها نيازمند داده تكرارپذيرهستند.

iterator‎ـ هر شئ كه ‎iterator‎ پياده سازي نمايد، ميتواند تابعي داشته باشد، كه ‎نيازمند داده تكرارپذير است.

‎يك تكرار كننده شامل ليستي ازآيتم ها و روش هائيكه حلقه زدن را انجام ميدهد، داراي نشانه گر ‎است كه آنرا روي يكي از آيتم ها نگه ميدارد .هرآيتمي از ليست داراي كليد شناسائي است، كه ‎ميتواند براي پيدا كردن آيتم كمك نمايد.

‎يك تكرار كننده(iterator) ‎بايد داراي متدهاي زير باشد:

current( )‎‎ـ ايتمي را برميگرداند كه نشانه روي آن قرار دارد .آن ميتواند هر ‎نوع داده اي باشد.

key( )‎‎ـ كليد منتسب به آيتم جاري را برگشت ميدهد .اين كليد را كليد انجمني ‎هم مي نامند.كليد فقط ميتواندintegr,float,boolean وياstring باشد.

‎‎next( )‎‎ـ نشانه را به آيتم بعدي ليست منتقل ميكند .

‎‎rewind( )‎‎ـ نشانه گر را به ابتداي ليست منتقل ميكند .

valid( )‎‎ـ اگر نشانه گر در خارج از آيتم هاي ليست قرارگيرد false برگشت ‎ميشود، در غير اينصورتtrue توجه كنيد كهnext( ) ‎درانتها باعث ميشود نشانه خارج ازليست قرارگيرد.

‎‎مثال ـ در اين مثال رابط تكرار كننده پياده سازي وآن در يك تكرار استفاده شده است.

 <!DOCTYPE html>
<html>
<body>

<?php 
// Create an Iterator
class MyIterator implements Iterator {
  private $items = [];
  private $pointer = 0;

  public function __construct($items) {
    // array_values() makes sure that the keys are numbers
    $this->items = array_values($items);
  }

  public function current() {
    return $this->items[$this->pointer];
  }

  public function key() {
    return $this->pointer;
  }

  public function next() {
    $this->pointer++;
  }

  public function rewind() {
    $this->pointer = 0;
  }

  public function valid() {
    // count() indicates how many items are in the list
    return $this->pointer < count($this->items);
  }
}

// A function that uses iterables
function printIterable(iterable $myIterable) {
  foreach($myIterable as $item) {
    echo $item;
  }
}

// Use the iterator as an iterable
$iterator = new MyIterator(["a", "b", "c"]);
printIterable($iterator);
?>

</body>
</html>

--(go to editor for change code and run)


Previous >    <Next