Fonksiyonlar içinde Dinamik Değişkenler

2 Cevap php

Neden bu işi yapar:

function myfunction($v) {
    $query = $v['host'] == '1';
    return ( $query );
}

$output = array_filter($recordset,myfunction);
print_r($output);

Değişkenler ile aynı şeyi gerçekleştirmek için çalışır, bu komut dosyası, değil mi oysa?

$column1 = 'host';
$value1 = 1;
$query1 = '$v[\''.$column1.'\'] == '.$value1;

function myfunction($v) {
    $query = $GLOBALS['query1'];
    return ( $query );
}

$output = array_filter($recordset,myfunction);
print_r($output);

Herhangi bir yardım büyük olurdu. Teşekkürler!

2 Cevap

Ifadesi $query = $v['host'] == '1'; $query ifade $v['host'] == '1' olarak ayarlandı değildir. Bu evaluates $v['host'] == '1' ve bebekler $query value olsun {[(7 bağlı olarak 1 veya 0 dır ekspresyonu of )]} eşittir '1'.

array_filter ikinci argüman için bir kullanıcı-tanımlı PHP geri çağırma işlevini almak içindir çünkü $output = array_filter($recordset,myfunction); çalışır.

Dinamik kodlama eval function (highly dangerous!) or using an object-oriented structure with object overloading kullanarak PHP gerçekten sadece başarılabilir.

Eğer küresel $ Sorgu1 kullanabilir miyim?