我有一個問題,我無法解釋自己。我認爲這可能是PHP或Laravel的錯誤 - 或者我正在做一些我不應該做的事情。即使索引存在,未定義的偏移量1仍然存在
我有一個國家代碼和國名
我想讀的文件,並與數據種子我的數據庫.csv文件。 因此,我有以下代碼來獲取CSV到一個數組:
$csv = public_path() . "/assets/countries.csv";
if(File::exists($csv)) {
$content = File::get($csv);
$lines = array();
$lines = explode("\n", $content);
for($i=0; $i<sizeof($lines);$i++) {
$line = $lines[$i];
$line = explode(",",$line);
$lines[$i] = $line;
}
}
到目前爲止好,我的$線陣列現在已經全部與各自與2個索引代碼的數組,0值和1爲國名。
做的foreach($線爲$線)和VAR傾銷$線,我得到:
array(2) { [0]=> string(2) "AF" [1]=> string(12) "Afghanistan " }
.....
對於每個條目。但是,現在會發生以下情況:
echo $line[0]; // output: AF
echo $line[1]; // undefined offset 1 error
我試圖檢查1是一個字符串索引或什麼那麼,請看下面的代碼+輸出:
foreach($lines as $line) {
var_dump($line);
echo 'array_key_exists(1, $line): ';
var_dump(array_key_exists(1, $line));
foreach($line as $key => $col) {
echo 'var_dump($key): ';
var_dump($key);
echo '$col: ' . $col;
echo '$line[$key]: ' . $line[$key];
}
}
(我刪除了一些呼應減免可讀性) 的代碼產生以下輸出(對於第一個結果和類似的其他所有:)
array(2) { [0]=> string(2) "AF" [1]=> string(12) "Afghanistan " }
array_key_exists(1, $line): bool(true)
var_dump($key): int(0)
$col: AF
$line[$key]: AFvar_dump($key): int(1)
$col: Afghanistan
$line[$key]: Afghanistan
哪有array_key_exists(1, $line)
結果如此,但$line[1]
在未定義的偏移量中:1錯誤?謝謝你的幫助。
編輯:$line[$key]
正在工作,而$line[1]
不是。在這種情況下var_dump(1 == $ key)導致bool(true)...
EDIT2:如果我沒有使用laravel(file_get_contents然後)具有相同的代碼 - 我沒有收到錯誤。見this fiddle for the code
你能爲它創建一個快速的在線小提琴嗎? – Rikesh
我想你應該重申這個問題,因爲它與Laravel無關。 – warspite
http://phpfiddle.org/lite/code/cvf-1kp –