PHP - Bir dizideki tüm değerleri doğrulamak için bir yolu var mı

4 Cevap

PHP kullanarak ..

İşte ne var .. Sana her şeyi açıklamak ediyorum ve belki birisi mantığı ile bana yardımcı ve belki bana doğru yönde işaret edebilir.

Ben üzerinde çalışıyorum bir mail sistemi var. Cc bölümünde, ben kullanıcı öylesine gibi, bir noktalı virgül ile değerleri ayırmak için izin veriyorum: 1, 2, 3, 4 ...

Bu değerler benim işlevi geçirilen zaman, ben bir diziye almak onları patlayabilir kullanıyorum. Ne yapmak istediğiniz bazı ilk kontrol ediyor. Ben öncelikle biçimi doğru ve her değeri doğru ayrılmış olduğundan emin olmak istiyorum. Eğer değilse, bir hata göstermelidir. Bu yapıldıktan sonra, ben her sayı gerçekte geçerli olduğundan emin olmak istiyorum. Ben, veritabanını sorgulamak bir diziye reslts koymak ve bunu doğrulamak için İn_Array () işlevini kullanmak için düşünüyordum ama bu iş olacak emin değilim olabilir. Birisi bu işlemek için en iyi yolu ile bana yardım edebilir misiniz?

Teşekkürler.

EDIT:

Değerleri CSV listesinde bir sahte değeri algılamak için en iyi yolu nedir?

4 Cevap

Her sayı Ayrılmış doğru olduğunu doğrulamak için, size cevap hiç boşluk olmadığını kontrol etmek istiyorum. Yani böyle bir şey çalışması gerekir:

$text = trim($id);
if(strpos(" ", $id) !== false)
{
    //error
}

Sonraki, değerleri kontrol etmek için, çok basit

if(!in_array($id, $database_ids))
{
    // error
}

Yalnızca sayısal değerler kullanıyorsanız nihayet, kimliği sayısal olup olmadığını kontrol edin

if(!is_numeric($id))
{
    //error
}

Birleştirmek için, bir diziye sarın

foreach($exploded_array as $key => $id)
{
    $id = trim(id);
    if(!is_numeric($id))
    {
        //error
    }
    if(strpos(" ", $id) !== false)
    {
        //error
    } 
    if(!in_array($id, $database_ids))
    {
        // error
    }
}

Ben kod değişkenleri var oldukça kendini açıklayıcı olduğunu umuyoruz, ancak daha fazla açıklamak için bana ihtiyacın olursa, sormaya çekinmeyin.

Senin gibi bir şey arıyor:

foreach ($array as $value) {
   //do checking here
}

array_filter bir seçenek olabilir.

Whichdan önerildiği gibi, burada dayanan bir uygulamasıdır array_filter():

<?php
function checkValue($value)
{
    $id = trim(id);
    if(!is_numeric($id))
    {
        return false;
    }
    if(strpos(" ", $id) !== false)
    {
        return false;
    } 
    if(!in_array($id, $database_ids))
    {
        return false;
    }
    return true;
}

$values = '1;2;3;4';
$values_extracted = explode(';', $values);

if(count($values) == count(array_filter($values_extracted), 'checkValue'))
{
   // Input was successfully validated
}
?>