duanjianao0592 2013-09-24 16:22
浏览 51
已采纳

将逗号分隔的字符串转换为数组,如csv字符串,而不使用str_getcsv函数

this could have been asked over and over again but i have failed to get the best answer allover google. Please help me.

Problem

Am fetching data from a forex rates rest API and this is exactly how the reply looks when i print it out.

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

Note that each line contains comma delimited data and the next line is on the next line.

When i store this data in a response variable $resp and use the code below

$result=str_getcsv($resp, "
");
pr($result);

I get the expected result as below

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] => 
)

This works perfectly on my localhost server but when i deploy it, i get an error below

Call to undefined function str_getcsv()

It seams the server doesn't know about that str_getcsv() function i tried to use.

I tried to use other functions like fgetcsv() but cant get them to give me the array output i want.

below is how i used fgetcsv()

$fh = fopen('php://memory', 'rw'); 
fwrite($fh, $resp);
rewind($fh);
$result = fgetcsv( $fh, strlen($resp), ',', ' ');
fclose($fh); 
pr($result);

but it picks only the first line of the $resp string and here is the output it gives

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
)

yet i want all the lines of the $resp string indexed in the array like in the first array

Please if you can help me get this to work by converting the string to the desired array, thanks inadvance.

  • 写回答

2条回答 默认 最新

  • drtoaamk20278 2013-09-24 16:26
    关注

    You can use explode(" ", $resp) to get array of lines.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#java#的问题,请各位专家解答!
  • ¥15 急matlab编程仿真二阶震荡系统
  • ¥20 TEC-9的数据通路实验
  • ¥15 ue5 .3之前好好的现在只要是激活关卡就会崩溃
  • ¥50 MATLAB实现圆柱体容器内球形颗粒堆积
  • ¥15 python如何将动态的多个子列表,拼接后进行集合的交集
  • ¥20 vitis-ai量化基于pytorch框架下的yolov5模型
  • ¥15 如何实现H5在QQ平台上的二次分享卡片效果?
  • ¥30 求解达问题(有红包)
  • ¥15 请解包一个pak文件