2009-09-22 96 views
-1

好的,這裏的想法是讓代碼將SF_追加到數組中的所有鍵名。 我把我的數組(它是一個對象的一部分),翻轉它,添加SF_,並翻轉它。這個php代碼有什麼問題?

某處在我失去了一些領域的過程中...

這裏是我開始:

object(stdClass)[12] 
    public 'Affiliate_Code__c' => string 'XX-TXUJC3' (length=9) 
    public 'AltEmail__c' => string '[email protected]' (length=22) 
    public 'City' => string 'Mobile' (length=6) 
    public 'Email' => string '[email protected]' (length=22) 
    public 'Fax__c' => string '251-300-1234' (length=12) 
    public 'FirstName' => string 'Benny' (length=5) 
    public 'LastName' => string 'Butler' (length=6) 
    public 'Phone' => string '251-300-3530' (length=12) 
    public 'PostalCode' => string '36606' (length=5) 
    public 'State' => string 'AL' (length=2) 
    public 'Street' => string '851 E I-65 Service Rd' (length=21) 
    public 'test1__c' => float 1 
array 
    'SF_Affiliate_Code__c' => string 'XX-TXUJC3' (length=9) 
    'SF_Email' => string '[email protected]' (length=22) 
    'SF_City' => string 'Mobile' (length=6) 
    'SF_Fax__c' => string '251-300-1234' (length=12) 
    'SF_FirstName' => string 'Benny' (length=5) 
    'SF_LastName' => string 'Butler' (length=6) 
    'SF_Phone' => string '251-300-3530' (length=12) 
    'SF_PostalCode' => int 36606 
    'SF_State' => string 'AL' (length=2) 
    'SF_Street' => string '851 E I-65 Service Rd' (length=21) 

這裏是我的代碼:

$response = $mySforceConnection->query(($query)); 



     foreach ($response->records as $SF) { 
     } 


     var_dump($SF); 
     $SF = array_flip($SF); 
      foreach ($SF as $key => $value){ 

       $SF[$key] = 'SF_'.$value; 
       } 

     $SF = array_flip($SF); 
     echo "<pre>"; 
     var_dump($SF); 
     echo "</pre>"; 
     extract($SF); 

任何想法? 我是任何類型的面向對象編程的新手,我確信這與它有關。 我很愚蠢的我必須做的:

foreach ($response->records as $SF) { } 

,因爲我不知道怎麼去數組任何其他方式。 幫助! 謝謝!如你所說,

+0

爲什麼不是在foreach使用$ SF的代碼?沒有意義......或錯字? – 2009-09-22 21:14:21

回答

1

當您做翻蓋時,最終會出現重複鍵 - 這些值將成爲關鍵字,並且您的值不是唯一的(例如,電子郵件和AltEmail__c都具有相同的值)。

而不是做一個翻轉再翻轉回來,只需要創建一個新的數組,並與新的密鑰複製值:

$SF_new = array(); 
foreach($SF as $key => $value) { 
    $SF_new['SF_' . $key] = $value; 
} 

// And if you want to continue using the $SF name... 
$SF = $SF_new; 
+0

好吧,你們都回答得很對,很難選擇。我正在選擇埃裏克,因爲它就像我的代碼一樣。 謝謝! – bbutle01 2009-09-22 21:57:58

1

array_flip將翻轉值和鍵。一個PHP數組不能有多個具有相同名字的鍵。嘗試這樣的事情,以避免翻轉:

<?php 
$SF = array(); 
foreach($response->records as $key => $value) 
{ 
    $SF['SF_' . $key] = $value; 
} 

關於你得到的對象數組的方式,這是做的正確方法。

+3

你的意思是foreach而不是for。 – easement 2009-09-22 21:17:46

+0

@easement真的,有一段時間沒有使用PHP,沒有真正考慮它。感謝您的評論,只是編輯了我的答案。 – Joost 2009-09-22 21:21:36

0

翻轉鍵和值。因爲你有價值共享相同的價值,你失去了他們在翻轉。

1
$SF = get_object_vars($response); 

將您的對象轉換爲數組。