首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP:赋给数组的值被截断为第一个字母

PHP:赋给数组的值被截断为第一个字母
EN

Stack Overflow用户
提问于 2017-01-27 00:16:26
回答 2查看 97关注 0票数 0

数组赋值时的奇怪行为。PHP脚本读取csv文件,并使用从该文件读取的值填充数组变量。

我在while循环中放入了一个echo命令,以便查看前8行的内容:

代码语言:javascript
复制
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    // numero di elementi presenti nella riga letta
    $num_elementi = count($data); if($nn<8) echo "<br>-- nn:".$nn;
    // popolamento dell'array
    for ($x=0; $x<$num_elementi; $x++) {
        $csvarray[$nn][$x] = $data[$x]; if($nn<8) echo " - ".$csvarray[$nn][$x];
    }
    $nn++;
}

结果在前几个字符处被截断:

代码语言:javascript
复制
> -- nn:0 - A - A - W - F - 1 - - 1 - 0 - - 0
> -- nn:1 - A - A - W - F - 1 - 5 - 7 - 6 - 3 - 5
> -- nn:2 - A - A - W - M - 3 - 4 - 3 - 1 - 2 - 1
> -- nn:3 - A - A - W - M - 3 - 6 - 3 - 7 - 4 - 7
> -- nn:4 - A - A - W - M - 1 - 3 - 1 - 7 - 2 - 7
> -- nn:5 - A - A - W - M - 2 - 1 - 2 - 6 - 1 - 6
> -- nn:6 - A - A - W - M - 3 - 3 - 3 - 8 - 1 - 8
> -- nn:7 - A - A - W - F - 2 - 6 - 2 - 1 - 3 - 1

如果我打印$data变量(与前面代码的区别是第二个echo命令)

代码语言:javascript
复制
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
    // numero di elementi presenti nella riga letta
    $num_elementi = count($data); if($nn<8) echo "<br>-- nn:".$nn;
    // popolamento dell'array
    for ($x=0; $x<$num_elementi; $x++) {
        $csvarray[$nn][$x] = $data[$x]; if($nn<8) echo " - ".$data[$x];
    }
    $nn++;
}

我得到了正确的结果:

代码语言:javascript
复制
-- nn:0 - AFGHANISTAN - AFGHANISTAN - WIS GREY ROUTE - FIXED - 1 - - 1 - 0 - - 0
-- nn:1 - AFGHANISTAN - AFGHANISTAN - WIS SARL - FIXED - 104 - 55.2599833333333 - 78 - 61 - 3315.599 - 59
-- nn:2 - AFGHANISTAN - AFGHANISTAN AWCC MOBILE - WIS SARL - MOBILE - 36 - 48.57 - 32 - 10 - 2914.2 - 10
-- nn:3 - AFGHANISTAN - AFGHANISTAN ETISALAT MOBILE - WIS SARL - MOBILE - 36 - 6.7854 - 36 - 7 - 407.124 - 7
-- nn:4 - AFGHANISTAN - AFGHANISTAN MOBILE - WIS SARL - MOBILE - 16 - 37.5628333333333 - 14 - 7 - 2253.77 - 7
-- nn:5 - AFGHANISTAN - AFGHANISTAN MTN MOBILE - WIS SARL - MOBILE - 26 - 16.7021166666667 - 26 - 6 - 1002.127 - 6
-- nn:6 - AFGHANISTAN - AFGHANISTAN ROSHAN MOBILE - WIS SARL - MOBILE - 31 - 32.93085 - 30 - 8 - 1975.851 - 8
-- nn:7 - ALBANIA - ALBANIA - WHITE LABEL (WIS) - FIXED - 2495 - 6269.08833333333 - 2451 - 1416 - 376145.3 - 1413

这只是一个任务,为什么我会得到不同的结果?

将csvarray的var_dump放在循环的末尾:

代码语言:javascript
复制
echo "<br>VARDUMP = "; var_dump($csvarray[0]);

结果是:

代码语言:javascript
复制
VARDUMP=string(26) "AAWF1100omunicazioni SpA"
EN

回答 2

Stack Overflow用户

发布于 2017-01-27 01:04:41

在第6行,您必须使用以下代码:

代码语言:javascript
复制
$csvarray[$nn][$x] = $data[$x]; if($nn<8) echo " - ".$csvarray[$nn]; 
票数 0
EN

Stack Overflow用户

发布于 2017-01-27 01:56:48

解决了在代码开头使用$csvarray=Array(Array())初始化数组的问题。该数组以前使用过,当我再次使用它时它不是空的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41878015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档