我不是程序员,也不为别人做脚本。这仅供我个人使用。我得到了帮助创建下面的代码。如果您能帮助我解决以下代码中的错误,我将不胜感激。
下面的代码从all.csv文件中提取硬币列表。每枚硬币都在它的独立线上。目前all.csv文件(197)总共有197个硬币。
拉出的硬币插入到用于从交易视图小部件(https://www.tradingview.com/widget/ticker/)中提取数据的脚本中
使用下面的当前代码,脚本可以工作,但是: 它跳过硬币(线)34到55(包括34和55)。 它跳过166-176之间的硬币(包括第166和第176枚硬币)。 此外,它没有显示188(包括188)之后的硬币。
示例行如下:(它们之间没有空格。)我无法想象堆栈溢出中的新行。在代码中,如果我改变" delta"到15它跳过31-60行
BITTREX:NAVBTC
BITTREX:WAVESBTC
BITTREX:ETCBTC
BITTREX:SALTBTC
BITTREX:ARDRBTC
<?php
$tickers = array();
$f = fopen("all.csv", "r");
while (($line = fgetcsv($f)) !== false) {
$lines = explode("\r", $line[0]);
foreach ($lines as $cell) {
$tickers[] = $cell;
}
}
fclose($f);
?>
<?php
$start = 0;
$delta = 11;
for($i = 0; $i <= (int)(count($tickers)/$delta); $i += 1) {
$t = array_slice($tickers, $start, $delta);
$out = implode('"}, {"description": "","proName": "', $t);
echo '<script src="https://s3.tradingview.com/external-embedding/embed-widget-tickers.js">{
"symbols": [{"description": "","proName": "'.$out.'"}],
"locale": "en"
}</script>';
$start += $delta;
}
?>
答案 0 :(得分:0)
首先,您似乎使用回车符“\ _”将文件分隔为行。虽然如果文件是在Windows中生成的,这可能会有效,但如果全部或部分文件来自Linux或其他只使用“\ n”而不是“\ r \ n”的操作系统,那么它将不起作用。
其次,你可以省去一些痛苦,并使用file()函数(http://php.net/manual/en/function.file.php)为你做所有的文件打开和行分割,并将结果整齐地放入一个数组中,例如:
$lines = file("all.csv");
foreach ($lines as $cell) {
// etc...
}