2013-03-17 28 views
1

PHP 5.我處於需要將不區分大小寫的url查詢翻譯爲PHP對象中的成員變量的情況。基本上,我需要知道URL查詢關鍵字指向哪個成員變量,以便我知道它是否是數字。通過不區分大小寫的字符串的PHP引用變量

例如:

class Foo{ 
    $Str; 
    $Num; 
} 

myurl.com/stuff?$var=value&num=1 

在處理此URL查詢,我需要知道與富說,「STR」聯繫人 - > $海峽等任何想法如何處理呢?我不能拿出任何東西。

回答

1

嘗試類似這樣的事情。

function fooHasProperty($foo, $name) { 
    $name = strtolower($name); 
    foreach ($foo as $prop => $val) { 
    if (strtolower($prop) == $name) { 
     return $prop; 
    } 
    } 
    return FALSE; 
} 

$foo = new Foo; 

// Loop through all of the variables passed via the URL 
foreach ($_GET as $index => $value) { 
    // Check if the object has a property matching the name of the variable passed in the URL 
    $prop = fooHasProperty($foo, $index); 
    // Object property exists already 
    if ($prop !== FALSE) { 
    $foo->{$prop} = $value; 
    } 
} 

這可能有助於看看php的文檔Classes and Objects

例子:

網址:myurl.com/stuff?var=value & NUM = 1

然後$_GET看起來是這樣的:

array('var' => 'value', 'num' => '1') 

通過循環,我們會請檢查$foo是否有財產var,($foo->var)以及是否有財產num$foo->num)。

+0

有趣的是,這將工作不區分大小寫?所以當查詢看起來像你發佈的那個時,它會設置$ foo-> Var(大寫V)。 – user2177707 2013-03-17 04:04:01

+0

如果你需要它不區分大小寫,你可以總是使用php的[strtolower](http://php.net/manual/en/function.strtolower.php),假設一切都是小寫的。例如:'$ index = strtolower($ index); $ FOO - > {$指數}'。 @ user2177707 - 您的對象屬性是否遵循命名約定?像所有的小寫字母,除了第一個字母,全部大寫,等等? – Aiias 2013-03-17 04:05:44

+0

CamelCase,這使得它很難自動確定格式(因此我的絕望:))。 – user2177707 2013-03-17 04:13:38

相關問題