これは何度も尋ねられた可能性がありますが、Google全体で最良の回答を得ることができませんでした. 私を助けてください。
問題
外国為替レートの残りの API からデータを取得しています。これは、印刷したときの返信の外観とまったく同じです。
EUR/USD,1380039070258,1.34,868,1.34,873,1.34641,1.35193,1.34932
USD/JPY,1380039068699,98.,789,98.,797,98.471,99.180,98.838
GBP/USD,1380039067482,1.60,082,1.60,095,1.59546,1.60500,1.60419
EUR/GBP,1380039067816,0.84,245,0.84,256,0.84067,0.84495,0.84127
USD/CHF,1380039064893,0.91,161,0.91,172,0.90974,0.91338,0.91097
EUR/JPY,1380039066371,133.,236,133.,252,132.697,134.008,133.371
EUR/CHF,1380039063317,1.22,951,1.22,966,1.22853,1.23050,1.22919
USD/CAD,1380039062062,1.02,960,1.02,969,1.02655,1.03111,1.02841
AUD/USD,1380039069019,0.93,957,0.93,968,0.93635,0.94329,0.94307
GBP/JPY,1380039066561,158.,149,158.,170,157.342,158.978,158.552
各行にはカンマ区切りのデータが含まれており、次の行は次の行にあることに注意してください。
このデータを応答変数に保存し、$resp
以下のコードを使用すると
$result=str_getcsv($resp, "\n");
pr($result);
以下のように期待される結果が得られます
Array
(
[0] => EUR/USD,1380039070258,1.34,868,1.34,873,1.34641,1.35193,1.34932
[1] => USD/JPY,1380039068699,98.,789,98.,797,98.471,99.180,98.838
[2] => GBP/USD,1380039067482,1.60,082,1.60,095,1.59546,1.60500,1.60419
[3] => EUR/GBP,1380039067816,0.84,245,0.84,256,0.84067,0.84495,0.84127
[4] => USD/CHF,1380039064893,0.91,161,0.91,172,0.90974,0.91338,0.91097
[5] => EUR/JPY,1380039066371,133.,236,133.,252,132.697,134.008,133.371
[6] => EUR/CHF,1380039063317,1.22,951,1.22,966,1.22853,1.23050,1.22919
[7] => USD/CAD,1380039062062,1.02,960,1.02,969,1.02655,1.03111,1.02841
[8] => AUD/USD,1380039069019,0.93,957,0.93,968,0.93635,0.94329,0.94307
[9] => GBP/JPY,1380039066561,158.,149,158.,170,157.342,158.978,158.552
[10] =>
)
これは私のローカルホストサーバーで完全に機能しますが、展開すると以下のエラーが発生します
Call to undefined function str_getcsv()
サーバーは、str_getcsv()
私が使用しようとしたその機能を認識していないようです。
私は他の機能を使用しようとしfgetcsv()
ましたが、私が望むものを得ることができませarray output
ん。
以下は、私が fgetcsv() を使用した方法です
$fh = fopen('php://memory', 'rw');
fwrite($fh, $resp);
rewind($fh);
$result = fgetcsv( $fh, strlen($resp), ',', ' ');
fclose($fh);
pr($result);
しかし、それは文字列の最初の行のみを選択し$resp
、ここにそれが与える出力があります
Array
(
[0] => EUR/USD
[1] => 1380040007538
[2] => 1.34
[3] => 882
[4] => 1.34
[5] => 890
[6] => 1.34641
[7] => 1.35193
[8] => 1.34932
)
それでも$resp
、最初の配列のように、配列でインデックス付けされた文字列のすべての行が必要です
文字列を目的の配列に変換することで、これを機能させることができる場合は、事前に感謝します。