PHP bir eleman için ilk anahtarı alın?

3 Cevap

Ben bir element / değer bir dizi bulunan ilk bir ise ekstra bir sınıf etiketi eklemek çalışıyorum. Sorun gerçekten önemli ne olacağını bilmiyorum, bir ...

Dizinin bir örneği minified

Array (
    [0] => Array(
            id => 1
            name = Miller
            )
    [1] => Array(
                id => 4
                name = Miller
            )
    [2] => Array(
                id => 2
                name => Smith
    [3] => Array(
                id => 7
                name => Jones
            )
    [4] => Array(
                id => 9
                name => Smith
            )
)

O "isim" ilk örneği ise Yani, o zaman ben bir sınıf eklemek istiyorum.

3 Cevap

Ben tür yapmak için çalışıyoruz anlamak düşünüyorum. Sen dizi döngü olabilir ve her isim edin. Zaten ayrı bir dizide bir sınıf oluşturduk isimleri tutun.

for each element in this array
    if is in array 'done already' then: continue
    else:
        create the new class
        add name to the 'done already' array

Pseudo-code için üzgünüm, ama oldukça iyi açıklıyor.

Düzenleme: burada bunun için kod ...

$done = array();
foreach ($array as $item) {
    if (in_array($item['name'], $done)) continue;
    // It's the first, do something
    $done[] = $item['name'];
}

Ben bu dizide döngü konum varsayalım. Bu nedenle, basit bir durum kullanılabilir:

$first = 0;
foreach ($arr as $value) {
    if (!$first++) echo "first class!";
    echo $value;
    // The rest of process.
}

Bir dizinin sadece ilk değerini almak için, ayrıca eski moda reset() ve current() işlevlerini kullanabilirsiniz:

reset($arr);
$first = current($arr);

Animuson iyi o var. Orada küçük bir ek Olabilir eğer:

>  $done = array();  
>  foreach ($array as $item) {
>      if (in_array($item['name'], $done)) continue;
>      // It's the first, do something
>      $done[] = $item['name'];  }

in_array () çok hızlı yavaş alırsınız. Böyle bir şey deneyin:

$done = array();  
foreach ($array as $item) {
  $key = $item['name'];
  if( !isset( $done[$key] )) {
    ...
  }
  $done[$key] = true;
}

btw. Çok kötü bu site, tüm kullanıcılar için yorum desteklemiyor.