PHP 带 explode() 的多维数组拆分错误
PHP Multidimensional array with explode() splits wrong
我有一个名为 data.txt 的文件,其中包含以下内容:(三组,每组包含三辆汽车)
"audi,bmw,mercedes#volvo,fiat,seat#peugeot,..."
等等,你懂的。
使用 php explode() 通过 # 拆分“组”效果非常好。但是,当我尝试按 komma 拆分组时,它无法按我希望的方式工作:
对于“$tablerow[0][1];”我只得到字母“u”(第二个字母)而不是“bmw”(预期的第二个词)。
我的错误在哪里(下面的代码)?
$index_number 只是计算这些组的数量。
$datafile = fopen("data.txt","r"); <br>
$alldata = fread($datafile,filesize("data.txt")); <br>
$tablerow = explode("#",$alldata); <br>
for ($arrayposition = 0; $arrayposition <= $index_number; ++$arrayposition) { <br>
for ($tablerowindex = 0; $tablerowindex <= 3; ++$tablerowindex) { <br>
$tablecolumn = explode(",",$tablerow[$tablerowindex]); <br>
} <br>
} <br>
echo $tablerow[0][1];
容易多了。只是 explode
、循环和 explode
创建一个新的行数组和一个列数组:
$tablerow = explode("#", $alldata);
foreach($tablerow as $row) {
$result[] = explode(',', $row);
}
$tablerow = explode("#",$alldata);
$tablerow
之后是逗号分隔的汽车数组。例如$tablerow[0] == 'audi,bmw,mercedes'
.
稍后您遍历该数组并拆分每个元素。但是你不要再碰 $tablerow
了。 $tablerow
保持原样。所以 $tablerow[0][1]
引用第一个元素的第二个字符,即 "u"
你可能需要的是
$alldata='audi,bmw,mercedes#volvo,fiat,seat#peugeot';
$table = [];
foreach (explode("#", $alldata) as $carGroup) {
$table[] = explode(",", $carGroup);
}
// $table[0][0] => audi
// $table[0][1] => bmw
通过#
展开数据后,您也可以使用str_getcsv
。
array_map
将用给定函数 str_getcsv
.
的 return 值替换每个元素
$alldata = 'audi,bmw,mercedes#volvo,fiat,seat#A,B,C';
$data = array_map('str_getcsv', explode('#', $alldata));
工作example。
我有一个名为 data.txt 的文件,其中包含以下内容:(三组,每组包含三辆汽车)
"audi,bmw,mercedes#volvo,fiat,seat#peugeot,..."
等等,你懂的。
使用 php explode() 通过 # 拆分“组”效果非常好。但是,当我尝试按 komma 拆分组时,它无法按我希望的方式工作:
对于“$tablerow[0][1];”我只得到字母“u”(第二个字母)而不是“bmw”(预期的第二个词)。
我的错误在哪里(下面的代码)?
$index_number 只是计算这些组的数量。
$datafile = fopen("data.txt","r"); <br>
$alldata = fread($datafile,filesize("data.txt")); <br>
$tablerow = explode("#",$alldata); <br>
for ($arrayposition = 0; $arrayposition <= $index_number; ++$arrayposition) { <br>
for ($tablerowindex = 0; $tablerowindex <= 3; ++$tablerowindex) { <br>
$tablecolumn = explode(",",$tablerow[$tablerowindex]); <br>
} <br>
} <br>
echo $tablerow[0][1];
容易多了。只是 explode
、循环和 explode
创建一个新的行数组和一个列数组:
$tablerow = explode("#", $alldata);
foreach($tablerow as $row) {
$result[] = explode(',', $row);
}
$tablerow = explode("#",$alldata);
$tablerow
之后是逗号分隔的汽车数组。例如$tablerow[0] == 'audi,bmw,mercedes'
.
稍后您遍历该数组并拆分每个元素。但是你不要再碰 $tablerow
了。 $tablerow
保持原样。所以 $tablerow[0][1]
引用第一个元素的第二个字符,即 "u"
你可能需要的是
$alldata='audi,bmw,mercedes#volvo,fiat,seat#peugeot';
$table = [];
foreach (explode("#", $alldata) as $carGroup) {
$table[] = explode(",", $carGroup);
}
// $table[0][0] => audi
// $table[0][1] => bmw
通过#
展开数据后,您也可以使用str_getcsv
。
array_map
将用给定函数 str_getcsv
.
$alldata = 'audi,bmw,mercedes#volvo,fiat,seat#A,B,C';
$data = array_map('str_getcsv', explode('#', $alldata));
工作example。