尝试将辅助数组放回另存为.csv文件的平面文本文件中


Trying to put assoociative array back into a flat text file saved as a .csv file

我创建了一个脚本,它将采用一个包含 4 位信息的平面文本文件,用逗号分隔 4 位信息,就好像它是一个 csv 文件,(我已经这样保存了它(,它会将这个文件分解成一个数组,根据数字(人的年龄(对信息进行排序, 从最高到最低,之后我没有完成脚本的解决方案。我需要的是再次将此数组重写回平面文件中,现在信息已正确排序。

我在想要么重写,要么是某种内爆。

数组如下所示:

Array
(
    [0] => Array
        (
            [name] => john
            [age] => 58
            [job] => inspector
            [salary] => 42000
        )
    [1] => Array
        (
            [name] => henry
            [age] => 49
            [job] => supervisor
            [salary] => 38000
        )
    [2] => Array
        (
            [name] => monica
            [age] => 27
            [job] => assistant
            [salary] => 29000
        )

)

我页面上的实际代码如下所示:

?php>
$fh = fopen("C:xampp/htdocs/warehouseemplyees.csv", "r");
while(!feof($fh)){
    $current = trim(fgets($fh));
    $iArray[] = explode(",", $current);
}
$count = count($iArray);
for($x=0;$x<$count;$x++){
    $newArray[$x]["name"] = $iArray[$x][0];
    $newArray[$x]["age"] = $iArray[$x][1];
    $newArray[$x]["job"] = $iArray[$x][2];
    $newArray[$x]["salary"] = $iArray[$x][3];
}
function cmp($a, $b)
{
    if ($a['age'] == $b['age']) {
        return 0;
    }
    return ($a['age'] > $b['age']) ? -1 : 1;
}
usort($newArray, "cmp");

?>

在保存的平面 csv 文本文件中,结果如下所示:

john,58,inspector,42000
henry,49,supervisor,38000
monica,27,assistant,29000

总结一下。因此,再一次,我只需要能够在此函数按年龄从高到低对它们进行排序后将这些结果放回文件中。顺便说一下,这段代码效果很好,结果可以在我的本地主机中看到,但需要将结果放回文件中。感谢您的帮助。如果你愿意的话,请具体告诉我,我对编程很陌生,如果你告诉我在哪里将我的特定信息放入你的代码中,这将有所帮助。我无法理解人们在谈论代码时经常使用的通用描述。因此,如果我的特定数组名称位于某个位置或其他特定名称,请花时间告诉我,因为我不知道要对我的特定应用程序进行哪些具体更改。请从我上面的代码中获取必要的部分并将其填充到您的解决方案中,以便我知道。谢谢一堆!

$fh = fopen("C:xampp/htdocs/warehouseemplyees.csv", "r");
while(!feof($fh)){
    $current = trim(fgets($fh));
    $iArray[] = explode(",", $current);
}
// You're done reading here
fclose ($fh);
$count = count($iArray);
for($x=0;$x<$count;$x++){
    $newArray[$x]["name"] = $iArray[$x][0];
    $newArray[$x]["age"] = $iArray[$x][1];
    $newArray[$x]["job"] = $iArray[$x][2];
    $newArray[$x]["salary"] = $iArray[$x][3];
}
function cmp($a, $b)
{
    if ($a['age'] == $b['age']) {
        return 0;
    }
    return ($a['age'] > $b['age']) ? -1 : 1;
}
usort($newArray, "cmp");
// Reopen your file to overwrite with new content : "w". I guess it's the part you were looking for ?
$fh = fopen("C:xampp/htdocs/warehouseemplyees.csv", "w");
foreach ($newArray as $line) {
  fputcsv ($fh, $line); 
}
fclose ($fh);

您可能想看一下fputcsv以了解阅读部分,然后阅读fgetcsv以了解如何轻松设计阅读部分。

http://php.net/manual/en/function.fputcsv.php

http://php.net/manual/en/function.fgetcsv.php