TL; DR
Anda mencoba mengakses stringseolah-olah array, dengan kunci yang a string. stringtidak akan mengerti itu. Dalam kode kita dapat melihat masalahnya:
"hello"["hello"];
// PHP Warning: Illegal string offset 'hello' in php shell code on line 1
"hello"[0];
// No errors.
array("hello" => "val")["hello"];
// No errors. This is *probably* what you wanted.
Secara mendalam
Mari kita lihat kesalahan itu:
Peringatan: String ilegal mengimbangi 'port' di ...
Apa yang dikatakan? Dikatakan kami mencoba menggunakan string 'port'sebagai offset untuk string. Seperti ini:
$a_string = "string";
// This is ok:
echo $a_string[0]; // s
echo $a_string[1]; // t
echo $a_string[2]; // r
// ...
// !! Not good:
echo $a_string['port'];
// !! Warning: Illegal string offset 'port' in ...
Apa yang menyebabkan ini?
Untuk beberapa alasan Anda mengharapkan array, tetapi Anda memiliki string. Hanya campuran. Mungkin variabel Anda diubah, mungkin tidak pernah menjadi array, itu benar-benar tidak penting.
Apa yang bisa dilakukan?
Jika kita tahu kita harus memiliki array, kita harus melakukan beberapa debugging dasar untuk menentukan mengapa kita tidak memiliki array. Jika kita tidak tahu apakah kita akan memiliki arrayatau string, segalanya menjadi sedikit lebih rumit.
Apa yang bisa kita lakukan adalah segala macam pemeriksaan untuk memastikan kita tidak memiliki pemberitahuan, peringatan atau kesalahan dengan hal-hal seperti is_arraydan issetatau array_key_exists:
$a_string = "string";
$an_array = array('port' => 'the_port');
if (is_array($a_string) && isset($a_string['port'])) {
// No problem, we'll never get here.
echo $a_string['port'];
}
if (is_array($an_array) && isset($an_array['port'])) {
// Ok!
echo $an_array['port']; // the_port
}
if (is_array($an_array) && isset($an_array['unset_key'])) {
// No problem again, we won't enter.
echo $an_array['unset_key'];
}
// Similar, but with array_key_exists
if (is_array($an_array) && array_key_exists('port', $an_array)) {
// Ok!
echo $an_array['port']; // the_port
}
Ada beberapa perbedaan halus antara issetdan array_key_exists. Misalnya, jika nilai $array['key']is null, issetreturn false. array_key_existshanya akan memeriksa itu, yah, kuncinya ada .
$memcachedConfigbukan array itu. Showvar_dump($memcachedConfig);