2012-10-08 101 views
-1

我有此查詢創建一個數組:數組傳遞給函數在PHP

$run=0; 
$result = $conn->query("SELECT distinct isbn13 from inventory 
         WHERE quantity>0 and isbn13 like '978%' limit $run, 20"); 

while($image = $result->fetch_assoc()) 
{ 
    $isbn[$x] = $image['isbn13']; 
    $x++; 
} //end while 

,我需要將它傳遞給這個函數:

$parsed_xml = ProductId_xml($isbn); 

我知道有$ isbn中的信息,因爲我使用了print_r($ isbn);並看到陣列。然而,當我在函數(var_dump($ searchterm); die;)中做同樣的事情時,我得到NULL。 下面是函數的一部分:

count=0; 

function ProductId_xml($searchTerm) { 
    var_dump($searchTerm); die; 

    $params = array(
     'AWSAccessKeyId' => AWS_ACCESS_KEY_ID, 
     'Action' => "GetMatchingProductForId", 
     'SellerId' => MERCHANT_ID, 
     'SignatureMethod' => "HmacSHA256", 
     'SignatureVersion' => "2", 
     'Timestamp'=> gmdate("Y-m-d\TH:i:s.\\0\\0\\0\\Z", time()), 
     'Version'=> "2011-10-01", 
     'MarketplaceId' => MARKETPLACE_ID, 
     'IdType' => "ISBN", 
    ); 

    $id=array(explode(',',$searchTerm)); 

    foreach ($id as $newId) 
    { 
     $count .= $count +1;  
     $params += array('IdList.Id.'.$count => $newId); 
    } //end of foreach 

我如何獲得信息到我的功能?

+3

$搜索關鍵詞== $ SEARCHTERM!變量區分大小寫。 – Gordon

+1

準備好踢自己。 var_dump($ searchterm)以小寫字母「t」表示,但您將其作爲$ searchTerm傳遞。你將遇到的下一個問題是$ searchTerm已經是一個數組了,你正試圖使它爆炸。我不知道$ params應該是什麼,但+ =在那裏不起作用。 – James

+0

@James - YUP踢自己! $ params是我稍後在函數中使用的另一個數組。如果+ =不起作用,我應該如何去添加它? – Jim

回答

1

傳入變量$searchTerm應關聯數組。你不需要爆炸它。您應該可以通過說$searchTerm['key']或使用foreach循環來訪問信息。

foreach ($searchTerm as $key=>$val) { 
    $params['IdList.Id.'.$key] = $val; 
} //end of foreach 
+0

這看起來不錯,除了有沒有辦法讓$ key從1開始而不是0?我需要它看起來像這樣:IdList.Id.1。我知道$ key是數組的位置,所以我不確定是否可以改變它。我只是初始化它爲$ key = 1;在我的foreach聲明之前?或者是不可能改變的? – Jim

+1

當你從數據庫中取出數據時,你需要初始化'$ x = 1;',然後再啓動while循環。 – Pitchinnate

+0

謝謝,那就是訣竅!我感謝所有的幫助。 – Jim

1

PHP的變量名稱區分大小寫,因此$searchterm$searchTerm是不同的變量。

嘗試var_dump($searchTerm); die;

1

的問題是在這裏:

function ProductId_xml($searchTerm) { 
    var_dump($searchterm); die; 

$ SEARCHTERM$搜索關鍵詞不同。試着用:

var_dump($searchTerm); die; 

它應該工作