ホームページ  >  記事  >  バックエンド開発  >  PHP が Web サービス データを取得し、配列の次元を誤って返す

PHP が Web サービス データを取得し、配列の次元を誤って返す

WBOY
WBOYオリジナル
2016-06-13 13:11:46936ブラウズ

Web サービス データを取得するときに PHP によって返される配列の次元が正しくありません
Web サービスを読み取るために nusoap プラグインを使用しましたが、問題が発生しました。
返された配列が 1 グループより大きい場合、戻り値は正しくなります。ただし、配列データのグループが 1 つだけの場合、次元が変化し、count が配列の長さを正しく取得できなくなります。
コードは次のとおりです。
データが 2 セットある場合、結果は次のようになります。

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
    Array
    (
        [getTrafficResult] => Array
            (
                [trafficWay] => Array
                    (
                        [0] => Array
                            (
                                [Station] => 4828,4830,4868
                                [Line] => 2908,2906
                                [Price] => 10.5
                                [Alltime] => 10
                                [ChangeCount] => 1
                                [Type] => 2,2
                                [Station_name] => 尖沙咀地铁站#金钟地铁站#铜锣湾地铁站
                                [Line_name] => 荃湾线,港岛线
                                [Allstation] => 0|湾仔地铁站
                                [Stationcount] => 1,2
                                [Direction] => 中环地铁站#柴湾地铁站
                                [Time] => 5,5
                                [Distance] => 2172,2017
                                [Lineremark] => 0#0
                                [Addstartinfo] => 0
                                [Addendinfo] => 0
                            )
                        [1] => Array
                            (
                                [Station] => 2655,2847
                                [Line] => 1084
                                [Price] => 9.3
                                [Alltime] => 30
                                [ChangeCount] => 0
                                [Type] => 1
                                [Station_name] => 北京道,广东道#维多利亚公园,告士打道
                                [Line_name] => 新巴110
                                [Allstation] => 新世界中心,梳士巴利道#加连威老道,漆咸道南#香港科学馆,漆咸道南#牲口站,漆咸道北#海底隧道收费广场
                                [Stationcount] => 6
                                [Direction] => 筲箕湾
                                [Time] => 20
                                [Distance] => 2552
                                [Lineremark] => 0
                                [Addstartinfo] => 334#5#0
                                [Addendinfo] => 337#5#0
                            )
                    )
            )
    )



ただし、データセットは 1 つだけで、一次元は少なくなります:

PHP コード
<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->
    Array
    (
        [getTrafficResult] => Array
            (
                [trafficWay] => Array
                    (
                        [Station] => 4828,4827,4823,4855,4573
                        [Line] => 3190,2914,4227,3730
                        [Price] => 8
                        [Alltime] => 28
                        [ChangeCount] => 1
                        [Type] => 5,2,2,5
                        [Station_name] => 尖沙咀地铁站#尖东地铁站#红袋地铁站#沙田地铁站#新城市广场
                        [Line_name] => 步行,西铁线,东铁线,步行
                        [Allstation] => 0|0|旺角东地铁站#九龙塘地铁站#大围地铁站|0
                        [Stationcount] => 0,1,4,0
                        [Direction] => 0#红袋地铁站#落马洲地铁站#0
                        [Time] => 6,3,15,2
                        [Distance] => 360,1125,8810,163
                        [Lineremark] => 0#0#0#从A出口
                        [Addstartinfo] => 0
                        [Addendinfo] => 0
                    )
            )
    )



$arr['getTrafficResult']['trafficWay'] を使用しますデータを取得して長さを取得する場合、最初の取得では長さは 2 となり、これは正しいですが、2 番目の取得ではフィールド数である 16 が取得されます。

この問題の解決方法

-----解決策---------
例から、区別するには isset($arr['getTrafficResult']['trafficWay'][0]) を判断するだけで済みます。
------解決策----------------------
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。