PHP - Birden değerler için Dizi arama

5 Cevap php

Ben çiftleri olan değerlerden anahtarlarını almak gerekir. Ben array_search kullanmaya çalıştı ve bu iyi çalıştı, ama ben sadece bir hit olarak ilk değeri var.

Ben bu durumda 0 ve 2, yinelenen değerler hem anahtarlarını almak gerekir. Bir dizi olarak arama sonucu çıkış iyi olurdu.

Bunu yapmak için bir PHP fonksiyonu var mı ya da ben bunu yapmak için bazı çoklu döngüler yazmak gerekiyor?

$list[0][0] = "2009-09-09";
$list[0][1] = "2009-05-05";
$list[0][2] = "2009-09-09";
$list[1][0] = "first-paid";
$list[1][1] = "1";
$list[1][2] = "last-unpaid";

echo array_search("2009-09-09",$list[0]);

5 Cevap

Sen arama değeri ile array_keys istiyorum

array_keys($list[0], "2009-09-09");

sizin durumda, belirtilen değer ile tuşları bir dizi dönecekleri [0, 2]. Siz de çiftleri bulmak istiyorsanız, önce o orijinal üzerinde array_keys kullanarak bu dizinin üzerinde yineleme, array_unique ile bir geçiş yapabilir; uzunluğu> 1 bir dizi döndürür şey bir yinelenen ve sonuç çiftleri saklandığı anahtarları. Gibi bir şey ...

$uniqueKeys = array_unique($list[0])

foreach ($uniqueKeys as $uniqueKey)
{
  $v = array_keys($list[0], $uniqueKey);

  if (count($v) > 1)
  {
    foreach ($v as $key)
    {
      // Work with $list[0][$key]
    }

  }
}

Fonksiyon çağrıları aşağıdaki kombinasyonu, tüm yinelenen değerleri verecektir:

$a = array(1, 1, 2, 3, 4, 5, 99, 2, 5, 2);

$unique     = array_unique($a); // preserves keys
$diffkeys   = array_diff_key($a, $unique);
$duplicates = array_unique($diffkeys);

echo 'Duplicates: ' . join(' ', $duplicates) . "\n"; // 1 2 5

If needle is found in haystack more than once, the first matching key is returned. To return the keys for all matching values, use array_keys() with the optional search_value parameter instead.

array_keys

print_r(array_keys($array, $find));

Nerede:

  • $array - değişken dizi
  • $find - Sizin dizideki max değeri