2016-07-27 154 views
1

我目前正在嘗試使用PHP從csv文件中獲取一些信息。我正在使用以下代碼並獲取以下輸出:數組變量鍵/值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]; 
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 
) 

如果有人能指出我要出錯的地方,它將被appriciated!

+0

既然你有3個數組,你可以只是做https://repl.it/Cg3C'$ A + $ B + $ C' –

回答

3

array_combine功能

返回組合陣列FALSE如果每個陣列的元素數量不相等。

您的代碼在每次循環迭代中創建一個新數組。
要得到一個數組改變你的循環代碼如下所示:

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

這個工作!感謝 – mrdarb

2

變化:

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

要:

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

,循環之後:

echo '<pre>'; 
print_r($c); 
echo '</pre>'; 
1
<?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的回聲和print_r的,並添加

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

然後最後我們打印$輸出數組時,哪個合併每一個新的數組作爲一個新的因素我們$輸出數組中。

這應該是工作,只要你想,無論如何,如果你需要改變一些東西,將來你可以檢查array_merge功能here

+0

你應該解釋一下你的答案。 –

+0

完成,感謝您的反饋。 – Martin