página - PHP: no se puede usar un escalar como una advertencia de matriz
php no se ve en mi navegador (5)
Asegúrese de no declararlo antes como entero, flotante, de cadena o booleano. http://php.net/manual/en/function.is-scalar.php
Tengo el siguiente código:
$final = array();
foreach ($words as $word) {
$query = "SELECT Something";
$result = $this->_db->fetchAll($query, "%".$word."%");
foreach ($result as $row)
{
$id = $row[''page_id''];
if (!empty($final[$id][0]))
{
$final[$id][0] = $final[$id][0]+3;
}
else
{
$final[$id][0] = 3;
$final[$id][''link''] = "/".$row[''permalink''];
$final[$id][''title''] = $row[''title''];
}
}
}
El código PARECE funcionar bien, pero recibo esta advertencia:
Warning: Cannot use a scalar value as an array in line X, Y, Z (the line with: $final[$id][0] = 3, and the next 2).
¿Alguien puede decirme cómo arreglar esto?
Debe establecer $final[$id]
en una matriz antes de agregarle elementos. Inténtalo con cualquiera
$final[$id] = array();
$final[$id][0] = 3;
$final[$id][''link''] = "/".$row[''permalink''];
$final[$id][''title''] = $row[''title''];
o
$final[$id] = array(0 => 3);
$final[$id][''link''] = "/".$row[''permalink''];
$final[$id][''title''] = $row[''title''];
El Otro problema que he visto en esto es cuando el anidamiento de matrices tiende a lanzar la advertencia, considere lo siguiente:
$data = [
"rs" => null
]
esto de arriba funcionará absolutamente bien cuando se usa como:
$data["rs"] = 5;
Pero el siguiente arrojará una advertencia ::
$data = [
"rs" => [
"rs1" => null;
]
]
..
$data[rs][rs1] = 2; // this will throw the warning unless assigned to an array
También asegúrate de no declararlo como una matriz y luego intenta asignar algo más a la matriz como una cadena, flotante, entero. Tuve ese problema Si haces algunos ecos de salida, estaba viendo lo que quería la primera vez, pero no después de otro pase del mismo código.
Un poco tarde, pero para cualquiera que se pregunte por qué reciben el mensaje "Advertencia: no se puede usar un valor escalar como una matriz";
la razón es porque en algún lugar primero has declarado tu variable con un entero o cadena normal y luego estás tratando de convertirla en una matriz.
Espero que ayude