TL; DR
Estás intentando acceder a un stringcomo si fuera una matriz, con una clave que es un string. stringNo lo entenderé. En código podemos ver el problema:
"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.
A fondo
Veamos ese error:
Advertencia: la cadena ilegal compensa el 'puerto' en ...
¿Qué dice? Dice que estamos tratando de usar la cadena 'port'como un desplazamiento para una cadena. Me gusta esto:
$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 ...
¿Qué causa esto?
Por alguna razón esperabas un array, pero tienes un string. Solo una confusión. Tal vez su variable fue cambiada, tal vez nunca fue unarray , realmente no es importante.
¿Qué se puede hacer?
Si sabemos que deberíamos tener un array, debemos hacer una depuración básica para determinar por qué no tenemos un array. Si no sabemos si tendremos un arrayo string, las cosas se vuelven un poco más complicadas.
Lo que podemos hacer es todo tipo de comprobación para asegurarse de que no tenemos avisos, advertencias o errores con cosas como is_arrayy isseto 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
}
Hay algunas diferencias sutiles entre issety array_key_exists. Por ejemplo, si el valor de $array['key']es null, issetdevuelve false. array_key_existssolo verificará que, bueno, la clave existe .
$memcachedConfigno es esa matriz. Espectáculovar_dump($memcachedConfig);