首页 > 解决方案 > PHP数组推送不起作用并返回null

问题描述

我正在尝试从文件中提取一些数据。读取了数据,但是当我尝试将其放入数组时,array_push 函数不起作用并返回 null。这是我的代码:

<?php
$in_file = 'php-files-task.csv';
$new_array = array();


$data = file_get_contents($in_file,true);


    if($data[1] == 'simple' && (int)$data[3] < 10){
        array_push($new_array, $data);
    }

print_r($new_array); //return an empty array
?>

如果有人知道如何填充这个数组并返回正确的结果?

标签: php

解决方案


file_get_contents()返回一个字符串,而不是一个数组。

你应该fgetcsv()循环调用。

$fd = fopen($in_file, "r");
while ($data = fgetcsv($fd)) {
    if($data[1] == 'simple' && (int)$data[3] < 10){
        array_push($new_array, $data);
    }
}
fclose($fd);

这将创建一个二维数组,其中包含满足if条件的文件的所有行。

您可以使用类似的循环将新数组写入另一个文件fputcvs()

$fd = open($out_file, "w");
foreach ($new_array as $row) {
    fputcsv($fd, $row);
}
fclose($fd);

您可以使用单个循环完成整个操作,而无需使用数组。

$in_fd = fopen($in_file, "r");
$out_fd = fopen($out_file, "w");
while ($data = fgetcsv($in_fd)) {
    if($data[1] == 'simple' && (int)$data[3] < 10){
        fputcsv($out_fd, $data);
    }
}
fclose($in_fd);
fclose($out_fd);

推荐阅读