2011-07-06 6 views
-1

안녕하세요 사람들에게 문제가 있습니다.배열 도움말

나는 webservice에서 배열을 반환했습니다.

Array 
(
[GetProductResult] => Array 
    (
     [schema] => Array 
      (
       [element] => Array 
        (
         [complexType] => Array 
          (
           [choice] => Array 
            (
             [element] => Array 
              (
               [complexType] => Array 
                (
                 [sequence] => Array 
                  (
                   [element] => Array 
                    (
                     [0] => Array 
                      (
                       [!name] => codigo 
                       [!minOccurs] => 0 
                      ) 

                     [1] => Array 
                      (
                       [!name] => nome 
                       [!minOccurs] => 0 
                      ) 

                     [2] => Array 
                      (
                       [!name] => imagem 
                       [!minOccurs] => 0 
                      ) 

                     [3] => Array 
                      (
                       [!name] => stock 
                       [!minOccurs] => 0 
                      ) 

                    ) 

                  ) 

                ) 

               [!name] => produto 
              ) 

             [!minOccurs] => 0 
             [!maxOccurs] => unbounded 
            ) 

          ) 

         [!name] => produtos 
         [!msdata:IsDataSet] => true 
         [!msdata:UseCurrentLocale] => true 
        ) 

       [!id] => produtos 
      ) 

     [diffgram] => Array 
      (
       [produtos] => Array 
        (
         [produto] => Array 
          (
           [codigo] => 13251 
           [nome] => Nova Development - Print Explosion Deluxe Mac 
           [imagem] => http://www.novadevelopment.com/images/3DBox_w250_tcm23-129399.jpg 
           [stock] => 0 
           [!diffgr:id] => produto1 
           [!msdata:rowOrder] => 0 
          ) 

        ) 

      ) 

    ) 

)

난 내 데이터베이스에서 id_produto를 사용하여 웹 서비스에서 요청하지만 때로는 내가이 오류가있어 :

Cannot use string offset as an array in php

및 배열 결과 :

Array 
(
[GetProductResult] => Array 
    (
     [schema] => Array 
      (
       [element] => Array 
        (
         [complexType] => Array 
          (
           [choice] => Array 
            (
             [element] => Array 
              (
               [complexType] => Array 
                (
                 [sequence] => Array 
                  (
                   [element] => Array 
                    (
                     [0] => Array 
                      (
                       [!name] => codigo 
                       [!minOccurs] => 0 
                      ) 

                     [1] => Array 
                      (
                       [!name] => nome 
                       [!minOccurs] => 0 
                      ) 

                     [2] => Array 
                      (
                       [!name] => imagem 
                       [!minOccurs] => 0 
                      ) 

                     [3] => Array 
                      (
                       [!name] => stock 
                       [!minOccurs] => 0 
                      ) 

                    ) 

                  ) 

                ) 

               [!name] => produto 
              ) 

             [!minOccurs] => 0 
             [!maxOccurs] => unbounded 
            ) 

          ) 

         [!name] => produtos 
         [!msdata:IsDataSet] => true 
         [!msdata:UseCurrentLocale] => true 
        ) 

       [!id] => produtos 
      ) 

     **[diffgram] =>** 
    ) 

)

이제 어떻게이 오류를 피할 수 있습니까? 이 배열에 액세스하려고합니다.

$stock = $result['GetProductResult']['diffgram']['produtos']['produto']['stock']; 

누군가가 도와 줄 수 있습니까?

Cumps

+1

나는 당신의 문제를 어떻게 해결할 지 잘 모릅니다. 나는 너에게 가난한 영혼을 말하고 싶었다. 그와 같은 배열은 금지되어야합니다. 아마도 제네바 협약을 수정하여 고문으로 규정 할 수 있을까요? –

+0

webservice의 부분에 잘못 코딩 된 것처럼 보입니다. 배열 키 "! msdata : IsDataSet"을 상상할 수 없습니다 ... 함수 호출처럼 보입니다. –

+0

오류가 발생하면 두 번째 배열은'$ result'의 var_dump입니까? – ianbarker

답변

0

그 오류는 일반적으로 당신이 배열로 액세스하려는 항목에서 실제로 문자열을 의미합니다. 배열의 모든 중첩 요소는 실제로 배열 자체이고 문자열이 아니어야합니다.

+0

$ result [ 'GetProductResult'] [ 'diffgram']이 배열인지 문자열인지 어떻게 알 수 있습니까? –

+0

['is_array'] (http://php.net/manual/function.is-array.php)는 필요한 것을 수행하는 것 같습니다. – Lumbendil

+0

if (is_array ($ result [ 'GetProductResult'] [ 'diffgram'])) {...} –