PHP中两个字符串的比较和数组_切片
我觉得我做了一件很愚蠢的事,但我搞不清楚那是什么。PHP中两个字符串的比较和数组_切片,php,csv,string-comparison,slice,Php,Csv,String Comparison,Slice,我觉得我做了一件很愚蠢的事,但我搞不清楚那是什么。 我正在运行由fgetcsv()生成的数组。我想要的是在一行中的值与下一行中的值不同的位置将数组一分为二。 此代码导致$first保留除一个数组外的所有数组,而$second保留最后一个数组-完全忽略字符串比较strcmp()产生相同的结果 $csv = array(); $file = fopen('A.csv', 'r'); while (($result = fgetcsv($file)) !== false) { $csv[] =
我正在运行由
fgetcsv()
生成的数组。我想要的是在一行中的值与下一行中的值不同的位置将数组一分为二。此代码导致
$first
保留除一个数组外的所有数组,而$second
保留最后一个数组-完全忽略字符串比较strcmp()
产生相同的结果
$csv = array();
$file = fopen('A.csv', 'r');
while (($result = fgetcsv($file)) !== false)
{
$csv[] = $result;
}
fclose($file);
array_shift($csv); //gets rid of the CSV headers
$rows = count($csv);
for ($i = 0; $i <= $rows; $i++){
if ($csv[$i][1] != $csv[$i+1][1]){
$first = array_slice($csv, 0, $i);
$second = array_slice($csv, $i);
}
}
编辑:对于本例,我期望的$first
是:
Array
(
[0] => Array
(
[0] => A
[1] => person_one
[2] => 2
[3] => 20945970
[4] => 23287731
[5] => 2.48
[6] => 500
)
[1] => Array
(
[0] => A
[1] => person_one
[2] => 2
[3] => 233444593
[4] => 234432885
[5] => 1.56
[6] => 500
)
[2] => Array
(
[0] => A
[1] => person_one
[2] => 4
[3] => 99184637
[4] => 100861136
[5] => 1.24
[6] => 500
)
)
Array
(
[0] => Array
(
[0] => A
[1] => person_two
[2] => 1
[3] => 154990798
[4] => 157871980
[5] => 2.8
[6] => 700
)
[1] => Array
(
[0] => A
[1] => person_two
[2] => 1
[3] => 67136078
[4] => 70785393
[5] => 2.28
[6] => 800
)
)
我期望的$second
是:
Array
(
[0] => Array
(
[0] => A
[1] => person_one
[2] => 2
[3] => 20945970
[4] => 23287731
[5] => 2.48
[6] => 500
)
[1] => Array
(
[0] => A
[1] => person_one
[2] => 2
[3] => 233444593
[4] => 234432885
[5] => 1.56
[6] => 500
)
[2] => Array
(
[0] => A
[1] => person_one
[2] => 4
[3] => 99184637
[4] => 100861136
[5] => 1.24
[6] => 500
)
)
Array
(
[0] => Array
(
[0] => A
[1] => person_two
[2] => 1
[3] => 154990798
[4] => 157871980
[5] => 2.8
[6] => 700
)
[1] => Array
(
[0] => A
[1] => person_two
[2] => 1
[3] => 67136078
[4] => 70785393
[5] => 2.28
[6] => 800
)
)
它正在做您想做的事情,但当它到达最后一次迭代时,它会将最后一行中的内容与
null
进行比较,因此它会覆盖$first
和$second
尝试添加
break代码>在完成作业后,在满足条件时打破循环。请原谅,但我不太理解您的问题。您期望的$first
和$second
是什么?我已经用期望值编辑了我的问题。