что не так с этим php кодом? - PullRequest
       52

что не так с этим php кодом?

0 голосов
/ 23 сентября 2009

Хорошо, идея здесь в том, чтобы иметь код, который будет добавлять 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)

А вот и мой код:

<code>$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 "
"; экстракт ($ SF);

Есть идеи? Я новичок в программировании ОО любого рода, и я уверен, что это как-то связано с этим. Я так глуп, что должен сделать:

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

потому что я не знаю, как добраться до этого массива любым другим способом. Помогите! Спасибо!

Ответы [ 4 ]

1 голос
/ 23 сентября 2009

Когда вы делаете переворот, вы получаете дубликаты ключей - значения становятся ключами, а ваши значения не являются уникальными (например, Email и 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;
1 голос
/ 23 сентября 2009
$SF = get_object_vars($response);

Превратит ваш объект в массив.

1 голос
/ 23 сентября 2009

array_flip перевернет значения и клавиши, как вы сказали. Массив PHP не может иметь несколько ключей с одним и тем же именем. Попробуйте что-то вроде этого, чтобы избежать переворота:

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

О том, как вы получаете массив в объекте, это правильный способ сделать это.

0 голосов
/ 23 сентября 2009

перестановка ключей и значений. поскольку у вас есть значения, которые имеют одно и то же значение, вы потеряете их во флипе.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...