gpt4 book ai didi

PHP - CSV 到表未按预期转换

转载 作者:行者123 更新时间:2023-11-29 08:19:27 26 4
gpt4 key购买 nike

我正在尝试从 CSV 文件创建 SQL INSERT 语句。我已成功打开并读取该文件。我什至以表格格式输出文件。但是,我在 for 循环中所做的更改(例如当 $c == 0 时)不起作用。它只是按照 csv 文件中的内容输出到表中。这就是我正在努力改变的!为了与该示例保持一致,我尝试将“John Doe”这个名字改为“john”和“Doe”。 CSV 文件的名称为一个,我想分为第一个和最后一个。

此外,电话号码也没有改变。更改它们的代码以 $c == 5 开头。有趣的是,当我把它们放在这里时:http://ideone.com/HfGXJk效果很好。

<?php

fgetcsv_PHP();

function fgetcsv_PHP()
{
if (($handle = fopen("guests.csv", "r")) !== FALSE)
{

$length = 1000;
$delimiter = ",";

$fname = array();
$lname = array();
$address = array();
$city = array();
$state = array();
$zip = array();
$phone = array();
$email = array();

//print opening table
echo "<table border='1'>\n";


while ( ( $data = fgetcsv( $handle, $length, $delimiter ) ) !== FALSE )
{
// Count number of array elements in $data
$num = count($data);

// Print opening table row HTML tag
echo "<tr>\n";

//loop through array
for ($c=0; $c < $num; $c++)
{
if ($c == 0)
{
$name = $c;
$name = explode(" ",$name);
$first = array_shift($name);
$last = array_pop($name);
array_push($fname, $first);
array_push($lname, $last);
echo "<td>".$data[$first]."</td>\n";
}
if ($c == 1)
{
array_push($address, $c);
echo "<td>".$data[$c]."</td>\n";
}
if ($c == 2)
{
array_push($city, $c);
echo "<td>".$data[$c]."</td>\n";
}
if ($c == 3)
{
array_push($state, $c);
echo "<td>".$data[$c]."</td>\n";
}
if ($c == 4)
{
array_push($zip, $c);
echo "<td>".$data[$c]."</td>\n";
}
if ($c ==5)
{
$phnum = $c;
$phnum = preg_replace('~[^0-9]~','',$phnum);
array_push($phone, $phnum);
echo "<td>".$data[$phnum]."</td>\n";
}
if ($c == 6)
{
array_push($email, $c);
echo "<td>".$data[$c]."</td>\n";
}
}

// Print closing table row HTML tag
echo "</tr>\n";
}

// Print close table HTML tag
echo "</table>";

// Close the file pointed to by $handle
fclose($handle);
}
}
?>

最佳答案

读取名称的部分,将 $name 设置为 0,在不存在的空间处将其分解,将数组第一个元素(从分解)中的 0 放入 $first 中,并输出 $data[$first] 含义$data[0] - 原始值。

重构为 PHP 5.5:

$file = new SplFileObject('guests.csv', 'r');
$file->setFlags(SplFileObject::READ_CSV);
$file->setCsvControl(',', '"');

$converter = function($traversable) {
foreach ($traversable as $data) {
list($first, $last) = explode(' ', $data[0]);
$address = $data[1];
$city = $data[2];
$state = $data[3];
$zip = $data[4];
$phone = preg_replace('([^\d])', '', $data[5]);
$email = $data[6];

$result = array(
'first' => $first,
'last' => $last,
'address' => $address,
'city' => $city,
'state' => $state,
'zip' => $zip,
'phone' => $phone,
'email' => $email,
);
yield $result;
}
};

foreach ($converter($file) as $data) {
var_dump($data);
}

关于PHP - CSV 到表未按预期转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19824358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com