php - 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
?>
如果有人知道如何填充这个数组并返回正确的结果?
解决方案
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);
推荐阅读
- python - Python字符串到int的转换-使用ValueError时是否需要使用Exception?
- chart.js - 如何在 blazor 中使用 chart.js?
- dependency-injection - 合理使用依赖注入
- c++ - Breakpad中的minidump_stackwalk没有模块错误
- r - 在以分钟为单位的时差在 r 中可被 10 整除的条件下,从开始日期获取结束日期
- javascript - 工具提示位于 d3.js 中 svg 的底部
- java - SAST 问题 - 资源访问授权不正确
- heroku - 在 Heroku 中保存文件
- php - 在 CRUD 应用程序中更新期间增加输入 id
- tensorflow - 如何在分布式 Tensorflow 中为每个工作人员创建局部变量?