数组变量键/值PHP


Array variable key/value PHP

我目前正在尝试使用PHP从csv文件中获取一些信息。我正在使用以下代码并获得以下输出;

function readCSV($csvFile){
    $file_handle = fopen($csvFile, 'r');
    while (!feof($file_handle) ) {
        $line_of_text[] = fgetcsv($file_handle, 1024);
    }
    fclose($file_handle);
    return $line_of_text;
}
$csvFile = '500.csv';
$csv = readCSV($csvFile);
$keys = $csv[0];
$step = $csv[1];
foreach ($step as $k=>$v)
{
    $a = array("$keys[$k]");
    $b = array("$v");
    $c = array_combine($a, $b);
    echo '<pre>';
    print_r($c);
    echo '</pre>';
}

我得到了单个数组的输出,比如;

Array
(
    [first_name] => bob
)
Array
(
    [last_name] => smith
)
Array
(
    [company_name] => bobs logs
)

我希望输出在一个单独的数组中,显示为;

Array
(
    [first_name] => bob
    [last_name] => smith
    [company_name] => bobs logs
)

如果有人能指出我哪里出了问题,我会通知你的!

array_combine函数

返回组合的数组,如果每个数组的元素数不相等,则返回FALSE

您的代码在每个循环迭代中创建一个新数组
要获得单个数组,请更改循环代码,如下所示:

...
$c = [];
foreach ($step as $k => $v)
{
    $c[$keys[$k]] = $v;    
}
echo '<pre>';
print_r($c);
echo '</pre>';

更改:

$a = array("$keys[$k]");
$b = array("$v");
$c = array_combine($a, $b);

收件人:

$c[$keys[$k]] = $v;

并在循环后执行此操作:

echo '<pre>';
print_r($c);
echo '</pre>';
<?php
function readCSV($csvFile)
{
    $file_handle = fopen($csvFile, 'r');
    while (!feof($file_handle)) {
        $line_of_text[] = fgetcsv($file_handle, 1024);
    }
    fclose($file_handle);
    return $line_of_text;
}
$csvFile = '500.csv';
$csv     = readCSV($csvFile);
$keys    = $csv[0];
$step    = $csv[1];
$output = array();
foreach ($step as $k => $v) {
    $a = array("$keys[$k]");
    $b = array("$v");
    $c = array_combine($a, $b);
    $output = array_merge($output, $c);
}
echo '<pre>';
print_r($output);
echo '</pre>';

我做了什么改变?我把外面的foreach那些echo和print_r加上

$output = array_merge($output, $c);

它将每个新数组合并为$output数组中的一个新元素

最后我们打印$output数组。

这应该可以随心所欲地工作,无论如何,如果您将来需要更改某些内容,您可以在此处检查array_merge函数