php - 当元素计数相同时,PHP combine_array 产生 false
问题描述
如果这个问题与其他问题很接近,请道歉。我已经尝试了所有解决方案来完成一些简单的事情,但只有失败。:-(
我希望将数组一中的键分配为数组二的键。
$demos_keys = array_keys($demos);
//$c = array_combine($demos_keys, $csvdata); produces "FALSE"
//$c = $demos_keys + $csvdata; simply adds the arrays but doesn't assign keys
So then I tried to loop through each element to assign the keys manually - to no avail!
foreach ($csvdata as $row){
for($i = 0; $i<count($demo_keys); $i++) {
$csvdata[$demo_keys[$i]]=$row[$i];
}
}
demos_keys: 姓氏":"姓氏","email":"email","d1":"phone","d2":"status"
csvdata: "Dryer,fdryer@email.com,Backfield,North\r","Harris,fharris@email.com,Corp,South\r",etc.
我觉得 csvdata 数组有点不稳定。每件事都说它是一个大约有 1000 行的数组,但是最后一个元素末尾的回车让我很困扰。我以为我以后会处理它。
我还能尝试什么!?感谢大家的任何贡献!
解决方案
看起来您的 CSV 数据的每一行都没有被解析为单独的变量(您是使用fgets
orfile
而不是从文件中读取它fgetcsv
?)。所以你需要先拆分它,然后才能将它与$demos_keys
. 像这样的东西应该工作:
$demos_keys = array("lastname","email","d1","d2");
$csvdata = array("Dryer,fdryer@email.com,Backfield,North\r","Harris,fharris@email.com,Corp,South\r");
$result = array();
foreach ($csvdata as $row) {
$data = explode(',', trim($row));
$result[] = array_combine($demos_keys, $data);
}
print_r($result);
输出:
Array
(
[0] => Array
(
[lastname] => Dryer
[email] => fdryer@email.com
[d1] => Backfield
[d2] => North
)
[1] => Array
(
[lastname] => Harris
[email] => fharris@email.com
[d1] => Corp
[d2] => South
)
)
推荐阅读
- python - 如何在数据框熊猫python中省略数据
- typescript - 用 TypeScript 解决闭包模式?
- c++ - Winsock 中的 Recv() 需要有符号缓冲区
- php - 如何使用 Google 的 credentials.json 文件在 Heroku 上部署 PHP Laravel 应用程序?
- python - ValueError:时间数据“日期”与格式“%m/%d/%Y”不匹配(Python)
- highcharts - 无填充的 Highcharts 多边形
- java - 设置远程调试环境
- python - 函数回调不适用于多页 Dash/Django 应用程序
- python - 熊猫中的数据透视表:日期范围内的 aggfunc 总和
- c - Projectname.exe 已触发断点并且不一致