Saya mendapatkan error PHP:
PHP Notice: Undefined offset: 1
Berikut ini adalah kode PHP yang melempar ini:
$file_handle = fopen($path."/Summary/data.txt","r"); //open text file
$data = array(); // create new array map
while (!feof($file_handle) ) {
$line_of_text = fgets($file_handle); // read in each line
$parts = array_map('trim', explode(':', $line_of_text, 2));
// separates line_of_text by ':' trim strings for extra space
$data[$parts[0]] = $parts[1];
// map the resulting parts into array
//$results('NAME_BEFORE_:') = VALUE_AFTER_:
}
Apa ini berarti kesalahan? Apa yang menyebabkan kesalahan ini?
Perubahan
$data[$parts[0]] = $parts[1];
untuk
if ( ! isset($parts[1])) {
$parts[1] = null;
}
$data[$parts[0]] = $parts[1];
atau hanya:
$data[$parts[0]] = isset($parts[1]) ? $parts[1] : null;
Tidak setiap baris dari file anda memiliki usus besar dalam hal ini dan oleh karena itu meledak pada mengembalikan sebuah array dari ukuran 1.
Menurut php.net mungkin kembali nilai-nilai dari meledak:
Mengembalikan array string yang dibuat dengan memisahkan parameter string pada batas-batas yang dibentuk oleh pembatas.
Jika pembatas adalah string kosong (""), explode() akan mengembalikan FALSE. Jika pembatas mengandung nilai yang tidak terdapat dalam string dan negatif batas yang digunakan, maka array kosong akan dikembalikan, jika array yang berisi string yang akan dikembalikan.
Bagaimana untuk mereproduksi kesalahan di atas dalam PHP:
php> $yarr = array(3 => 'c', 4 => 'd');
php> echo $yarr[4];
d
php> echo $yarr[1];
PHP Notice: Undefined offset: 1 in
/usr/local/lib/python2.7/dist-packages/phpsh/phpsh.php(578) :
eval()'d code on line 1
Apa pesan kesalahan berarti?
Itu berarti php compiler mencari kunci 1
dan berlari hash terhadap hal itu dan tidak't menemukan nilai apapun yang terkait dengan itu maka kata Undefined offset: 1
Bagaimana saya membuat kesalahan itu pergi?
Meminta array jika ada kunci sebelum kembali nilainya seperti ini:
php> echo array_key_exists(1, $yarr);
php> echo array_key_exists(4, $yarr);
1
Jika array tidak mengandung kunci anda, don't meminta untuk nilai. Meskipun solusi ini membuat double-bekerja untuk program anda untuk "memeriksa apakah itu's ada" dan kemudian "pergi mendapatkannya".
Alternatif solusi yang's lebih cepat:
Jika anda mendapatkan sebuah kehilangan kunci adalah suatu keadaan yang luar biasa yang disebabkan oleh kesalahan, it's lebih cepat untuk hanya mendapatkan nilai (seperti dalam echo $yarr[1];
), dan menangkap bahwa offset kesalahan dan menangani seperti ini: https://stackoverflow.com/a/5373824/445131
Ini adalah "Pemberitahuan PHP", sehingga anda bisa dalam teori mengabaikan hal itu. Perubahan php.ini
:
error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED
Untuk
error_reporting = E_ALL & ~E_NOTICE
Ini menunjukkan semua kesalahan, kecuali untuk pemberitahuan.
Solusi ideal akan menjadi seperti di bawah ini. Anda memenangkan't lewatkan nilai-nilai dari 0 sampai n.
$len=count($data);
for($i=0;$i<$len;$i++)
echo $data[$i]. "<br>";
Saya baru-baru ini memiliki masalah ini dan saya didn't bahkan percaya itu saya salah ketik:
Array("Semester has been set as active!", true)
Array("Failed to set semester as active!". false)
Dan benar-benar itu! Aku hanya tidak sengaja mengetik "." bukan ","...
saya solusi tercepat adalah untuk minus 1 untuk panjang array sebagai
$len = count($data);
for($i=1; $i<=$len-1;$i++){
echo $data[$i];
}
saya offset selalu nilai terakhir jika dihitung adalah 140 maka akan mengatakan offset 140
tapi setelah menggunakan minus 1 semuanya baik-baik saja