Dizilerle Trouble

3 Cevap php

PHP böyle dizesi vardır:

$data = '1;3;5;7;9';

Ve döngüsü:

for ($i=0; $i < count($someArray); $i++)
{
   // If $i == any number in $data
}

Dizesindeki numaraları ile döngüsü $ i karşılaştırmak için hızlı yolu nedir. Ben döngüsü sayacı dize olup olmadığını kontrol etmek gerekir.

3 Cevap

Sadece kendi diziye $data patlayabilir

$data = '1;3;5;7;9';

$numbers = explode(";", $data);

for($i=0; $i < count($someArray); $i++)
{
    if(in_array($i, $numbers))
    {
        // do something
    }
}

Ben bir dizin için anahtar olarak numaralarını kullanabilirsiniz:

$data = '1;3;5;7;9';
$index = array_flip(explode(';', $data));

Şimdi sadece kullanım isset or array_key_exists to check if that number is in $data yapabilirsiniz:

for ($i=0, $n=count($someArray); $i<$n; ++$i) {
   if (array_key_exists($index, $i)) {
       // $i is in $data
   }
}

Hatta, tersini yapmak $data numaralarını yineleme ve 0'dan count($someArray) -1 aralığında olup olmadığını görebilirsiniz:

$data = '1;3;5;7;9';
$n = count($someArray);
foreach (explode(';', $data) as $number) {
    if (0 <= $number && $number < $n) {
        // $number is in range from 0 to $n-1
    }
}

Sadece değerleri (döngü içinde başka hiçbir mantığı) arıyorsanız eğer bir adım daha ileri sürebilir.

$data = '1;3;5;7;9';
$numbers = explode(";", $data);

$result = array_intersect($numbers, range(0, count($someArray)));

print_r($result);