2011-11-02 156 views
0

遇到问题。我想使用由字符串文字和字符串变量连接生成的键引用超全局文章。php:连接str var和str文字作为POST值的键

$guests = array(); 
$guest_data = $this->compile_guests_for_hcp('g1'); 
array_push($guests, $guest_data($hcp_id)); 

function compile_guests_for_hcp($guest_identfier){ 
    return function($hcp_id) use ($guest_identfier){ 
     $guest = array(
      'fname' => $_POST["fname_$guest_identifier"], 
      'lname' => $_POST["lname_$guest_identifier"], 
      'city' => $_POST["city_$guest_identifier"], 
      'state' => $_POST["state_$guest_identifier"], 
      'degree' => $_POST["degree_$guest_identifier"], 
      'zip' => $_POST["zip_$guest_identifier"], 
      'specialty' => $_POST["specialty_$guest_identifier"], 
      'email' => $_POST["email_$guest_identifier"], 
      'phone' => $_POST["pref_phone_$guest_identifier"], 
      'job_title' => $_POST["job_title_$guest_identifier"], 
      'office_addr_line_1' => $_POST["office_addr_line_1_$guest_identifier"], 
      'office_addr_line_2' => $_POST["office_addr_line_2_$guest_identifier"], 
      'hcp_data_idhcp_data' => $hcp_id 
     ); 
     return $guest; 
    }; 
} 

PHP是因为它试图例如$_POST["fname_"]参考和$_POST["guest_identifier"]

我试图访问$ _ POST [“fname_g1”]等

回答

-1

更换所有通话抛出未定义的变量错误$_POST[...@$_POST[...来压制错误。

或者用它像isset($_POST[...]) ? $_POST[...]前检查值...

或抑制PHP警告致电error_reporting(E_ALL^E_NOTICE)

+1

我的问题是,我想$ _ POST [“fname_g1”],通过连接带(STR)$ guest_identifier的“fname_”部分等于“G1” – Hippocrates

2

其次,以测试变量是否使用isset()您尝试访问它的值之前设置。你甚至可以在你的语法更直接写在字符串连接:

$var = isset($_POST[ 'fname_' . $guest_identifier]) ? 
      $_POST[ 'fname_' . $guest_identifier] : 'default_value' 

您的文章使得它听起来像PHP正试图访问两个独立的变量,$_POST["fname_"]和$ _ POST [“$ guest_identifier”],其不应该是这种情况,尤其是对于上面的语法。

0

只需使用操作符,如:$_POST["fname_".$guest_identifier]

0

我在想,你的做法有点过于复杂,但你的问题是不是在数组索引级联:有在你的代码没有语法错误,你”已经呈现了它。

例如,这就像一个魅力:

$a = array("foo"=>1); 
$o = "o"; 
print $a["fo$o"]; // prints 1 

你的问题是,$guest_identifier值没有被正确设置,所以你正在寻找POST指标简单地是不存在的。

有几种不同的方法。我的第一个建议是在调用这个函数前简单地验证ID是否在那里。如果这是不是一种选择,那么我可能会创建一个帮助:

function ifInPost($val, $default = NULL){ 
    if(isset($_POST[ $val ])) return $_POST[ $val ]; 
    return $default; 
} 

然后,你可以简单地更换$_POST["fname_$guest_identifier"]ifInPost("fname_$guest_identifier")

+0

我可以在调试看到访问,右在$ guest数组返回$ guest_identifier和$ hcp_id都正确设置之前。另外,我可以看到POST值,我想引用都设置,但所有日$来宾数组包含的是最后一项,“hcp_data_idhcp_data” => 100 – Hippocrates

+0

如果打印出来'$立即guest_identifier'行后会发生什么'返回函数($ hcp_id)use($ guest_identfier){'? – cwallenpoole

0

得到它! (Facepalm)

简单的拼写错误在我的论点,所以它没有被传递。我有身份。想念我。在发布代码hahaha时,我应该多关注浏览器的拼写检查!

function compile_guests_for_hcp($guest_identfier){ 
return function($hcp_id) use ($guest_identfier){ 
0

这将有助于您做出的n多项产品的动态插入。

$loopLength=$_POST['ProudctSize']; 

for ($i=1; $i <=$loopLength; $i++) 
{ 
    $productid=$_POST['P'.$i]; 
    $quatity=$_POST['Q'.$i]; 
    $rate=$_POST['R'.$i]; 

    $Insert=mysql_query("INSERT INTO saledisplay (`saleid`, `productid`, `quantity`, `rate`) 
        VALUES('$oid','$productid','$quatity','$rate')"); 
} 
相关问题