TL; DR
Bạn đang cố gắng truy cập stringnhư thể đó là một mảng, với một khóa đó là a string. stringsẽ không hiểu điều đó. Trong mã chúng ta có thể thấy vấn đề:
"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.
Chuyên sâu
Hãy xem lỗi đó:
Cảnh báo: offset 'cổng' bất hợp pháp trong ...
Nó nói gì? Nó nói rằng chúng tôi đang cố gắng sử dụng chuỗi 'port'làm phần bù cho chuỗi. Như thế này:
$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 ...
Điều gì gây ra điều này?
Đối với một số lý do bạn mong đợi một array, nhưng bạn có một string. Chỉ là một hỗn hợp. Có thể biến của bạn đã được thay đổi, có thể nó không bao giờ là mộtarray , nó thực sự không quan trọng.
Những gì có thể được thực hiện?
Nếu chúng ta biết chúng ta nên có một array, chúng ta nên thực hiện một số gỡ lỗi cơ bản để xác định lý do tại sao chúng ta không có array. Nếu chúng ta không biết liệu chúng ta có arrayhay không string, mọi thứ trở nên phức tạp hơn một chút.
Những gì chúng ta có thể làm là tất cả các loại kiểm tra để đảm bảo chúng ta không có thông báo, cảnh báo hoặc lỗi với những thứ như is_arrayvàisset hay 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
}
Có một số khác biệt tinh tế giữa issetvà array_key_exists. Ví dụ, nếu giá trị của $array['key']là null, issettrả về false. array_key_existssẽ chỉ kiểm tra xem, tốt, chìa khóa tồn tại .
$memcachedConfigkhông phải là mảng đó. Hiển thịvar_dump($memcachedConfig);