为每个循环命名中阵列中的每一行


Naming each line in array in for each loop

我有多个数组,我想在for each循环的末尾为每个数组命名。

代码php代码:

<?php
$csv = array_map("str_getcsv", file("translations/dk.csv"));
foreach ($csv as $line){
if ($line[1] != NULL){
    $line[0] = $line[1];
}
    print_r($line[0]);
    print_r("<br />");

}
fclose($csv);
?>

数组的示例。

Array ( [0] => Search and Save [1] => Søg og Spar på Hoteller ) 
Array ( [0] => Where are you going? [1] => Hvor skal du hen? ) 

现在,第[0]行的输出是每次foreach循环以不同的值自然运行时的输出。但我需要在每个循环中命名每个$line[0],以便以后可以访问它们。我该怎么做?

首先,不应该使用file()来分割行;CSV记录可能跨越多行。

$f = fopen("translations/dk.csv", 'rt');
$csv = array();
while (($data = fgetcsv($f)) !== false) {
    $csv[] = $data;
}
fclose($f);

其次,要从数组中选择第一列,可以使用array_column():

$results = array_column($csv, 0);
// "Search and Save", "Where are you going?"]

也许你正在寻找这样的东西:

<?php
$csv = array_map("str_getcsv", file("translations/dk.csv"));
$results = array();
foreach ($csv as $k => $line){
    if ($line[1] != NULL){
        $line[0] = $line[1];
        $results[$k] = $line[0];
    }
    print_r($line[0]);
    print_r("<br />");  
}
print_r($results);
?>