这个PHP代码有什么问题?

时间:2009-09-22 21:09:05

标签: php

好的,这里的想法是让代码将SF_附加到数组中的所有键名。 我拿了我的数组(它是一个对象的一部分),翻转它,添加了SF_,并将其翻转回来。

在这个过程的某个地方,我失去了一些领域......

这是我的开始:

object(stdClass)[12]
  public 'Affiliate_Code__c' => string 'XX-TXUJC3' (length=9)
  public 'AltEmail__c' => string 'benny@oxpublishing.com' (length=22)
  public 'City' => string 'Mobile' (length=6)
  public 'Email' => string 'benny@oxpublishing.com' (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 'benny@oxpublishing.com' (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);

有什么想法吗? 我是任何类型的OO编程的新手,我确信这与它有关。 我是如此愚蠢,我必须这样做:

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

因为我不知道如何以任何其他方式访问该数组。 救命! 谢谢!

4 个答案:

答案 0 :(得分:1)

正如你所说,

array_flip将翻转值和键。 PHP数组不能有多个具有相同名称的键。尝试这样的事情以避免翻转:

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

关于你到达对象中数组的方式,这是正确的方法。

答案 1 :(得分:1)

$SF = get_object_vars($response);

将您的对象转换为数组。

答案 2 :(得分: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;

答案 3 :(得分:0)

翻转互换键和值。因为你有共享相同值的值,所以你会在翻转中丢失它们。