each () ve liste () fonksiyonu

7 Cevap php

Ben her () ve liste () işlevini anlamak o kadar iyi değil. Herkes bana biraz daha ayrıntı vermek ve nasıl yararlı olabilir bana açıklayabilir misiniz?

Edit:

<?php
$foo = array("bob", "fred", "jussi", "jouni", "egon", "marliese");
$bar = each($foo);
print_r($bar);
?>

Array
(
    [1] => bob
    [value] => bob
    [0] => 0
    [key] => 0
)

Yani bu [1] değeri bob var, ancak [0] dizi açıkça bulunuyor dizideki demek?

7 Cevap

Oldukça farklı kullanıldığı gibi list, başına bir fonksiyonu değildir.

Eğer bir dizi var demek

$arr = array('Hello', 'World');

list, hızlı değişkenler için bu farklı dizi üyeleri atayabilirsiniz ile

list($item1, $item2) = $arr; //$item1 equals 'Hello' and $item2 equals 'World'

The each() function returns the current element key and value, and moves the internal pointer forward. each()

The list function — Assigns variables as if they were an array list()

Example usage is for iteration through arrays

  while(list($key,$val) = each($array))
    {
      echo "The Key is:$key \n";
      echo "The Value is:$val \n";

    }

CSV dosyaları hakkında düşünmeye zaman için çok yaygın bir örnek list olduğunu. Eğer sütun id, title ve text ile CSV olarak saklanan basit bir veritabanı var düşünün, böyle bir dosya bu gibi görünebilir:

1|Foo|Lorem ipsum dolor|
2|Bar|sit amet|
...

Şimdi size list işlevini kullanarak, bu gibi yapabilirdik bu dosyayı ayrıştırmak zaman:

$lines = file( 'myFile.csv' );
for ( $i = 0; $i < count( $lines ); $i++ )
{
    list( $id, $title, $text, $null ) = explode( '|', $lines[$i], 4 );
    echo "Id: $id, Title: $title\n$text\n\n";
}

Diğer fonksiyon, each, temelde iç işaretçileri kullanarak, diziler aracılığıyla yürümek sadece eski bir yoldur. Bunu yapmak için bir daha yaygın bir şekilde foreach şimdi kullanmaktır.

Liste, bir dil oluşumudur, bir fonksiyon değildir. Farklı değişkenler birden fazla değer atamak için kullanılır.

list($a, $b, $c) = array(1, 2, 3);

Şimdi $a böylece 1 eşittir, ve.

Her dizi, dizideki bir elemanın işaret dahili gösterici vardır. Varsayılan olarak, başından işaret.

each belirtilen dizi güncel anahtar ve değer verir, ve sonra bir sonraki değere ilerletir. Yani, onları bir araya:

list($key, $val) = each($array);

RHS $key ve $val atanmış bir dizi geri dönüyor. $ `Dizisindeki 'in iç işaretçi sonraki öğeye taşınır.

Genellikle bir döngü içinde olduğunu görürsünüz:

while(list($key, $val) = each($array)):

Bu temelde aynı şey:

foreach($array as $key => $val): 

İlk düzenlemede soruyu yanıtlamak için:

Temelde, PHP kaynak dizideki geçerli öğeden anahtar / değer çifti ile melez bir dizi yaratıyor.

Yani, $bar[1] ile $bar[0] ve değerini kullanarak anahtarını alabilirsiniz. OR, kullanarak $bar['key'] ve değeri $bar['value'] kullanarak anahtarını alabilirsiniz. Her zaman kaynak diziden tek bir anahtar / değer çifti var, sadece size gerçek anahtar ve gerçek değeri erişmenin iki farklı yollar veriyor.

Bir çok-boyutlu bir dizi var ki:

+---+------+-------+
|ID | Name | Job   |
| 1 | Al   | Cop   |
| 2 | Bob  | Cook  |
+---+------+-------+

Sen böyle bir şey yapacağım:

<?php
while(list($id,$name,$job) = each($array)) {
    echo "<a href=\"profile.php?id=".$id."\">".$name."</a> is a ".$job;
}
?>

Isimli bunları birlikte kullanarak, temelde, dizinin tuşların isimlerini bilmiyordum özellikle birleşmeli diziler üzerinde yineleme için erken bir yoldur.

Bugünlerde sadece yerine foreach kullanmak için değil biliyorum gerçekten hiçbir neden yok.

list() daha kolay okunabilir değişkenlere bir dizinin elemanlarını atamak için each() ayrı kullanılabilir.