Can not use scalar as an array (PHP)

Trädvy Permalänk
Medlem
Plats
Mölndal
Registrerad
Okt 2013

Can not use scalar as an array (PHP)

Hejsan!

Sitter och försöker få ordning på lite php kod men kommer dessvärre ingenvart.

Php scriptet läser data ur en SQLite databas, jag vill sedan placera datan som lästes in i ett array och sedan plotta dessa värden med hjälp av jpgraph. Dock stöter jag på patrul med felmedelandet "Can not use scalar as an array" vad jag har förstått är detta ett relativt vanligt fel som beror på att en variabel tidigare definerats som något annat än en array. Lösningen jag har lyckats läsa mig till är att sätta $variabel = array(); vilket jag gjorde redan från början. Jag finner inget ställe i min kod som definierar variabeln $voltage som något annat än en array.
Är detta ett tolkningsfel av mig eller är det något jag har missat att göra.

Oavsett här är koden

<?php // content="text/plain; charset=utf-8" require_once ('/var/www/html/jpgraph/src/jpgraph.php'); require_once ('/var/www/html/jpgraph/src/jpgraph_line.php'); class MyDB extends SQLite3 { function __construct() { $this->open('/home/pi/Documents/Projects/ArduinoSerialImport/solartracker.db'); } } $db = new MyDB(); if(!$db){ echo $db->lastErrorMsg(); } else { echo "Opened database successfully\n"; } $sql =<<<EOF SELECT voltage from stuffToPlot; EOF; $voltage = array(); $ret = $db->query($sql); while ($row[0] = $ret->fetchArray(SQLITE3_ASSOC)) { $voltage[] = $row[0]; //var_dump($row); //$isScalar = is_scalar($voltage); //var_dump(isScalar); } $graph = new Graph(300,250); $graph->SetScale("textlin"); $theme_class=new UniversalTheme; $graph->SetTheme($theme_class); $graph->img->SetAntiAliasing(false); $graph->title->Set('Filled Y-grid'); $graph->SetBox(false); $graph->img->SetAntiAliasing(); $graph->yaxis->HideZeroLabel(); $graph->yaxis->HideLine(false); $graph->yaxis->HideTicks(false,false); $graph->xgrid->Show(); $graph->xgrid->SetLineStyle("solid"); $graph->xaxis->SetTickLabels(array('A','B','C','D')); $graph->xgrid->SetColor('#E3E3E3'); $p1 = new LinePlot($voltage); $graph->Add($p1); $p1->SetColor("#6495ED"); $p1->SetLegend('Line 1'); $graph->legend->SetFrameWeight(1); // Output line $graph->Stroke(); ?>

Om ni har förslag på förbättringar av koden tar jag tacksamt emot detta

/J

Stationär Dator Intel Core i7 4790k 4.85 Ghz @1.3V, Kelvin S24, Gigabyte Windforce GTX 970, Kingston Hyper X 4x4 GB 1600 MHz, Samsung 840x3, Msi Z97 Gaming 7, Windows 10 Pro / Fedora 28, Beyerdynamic DT 990 PRO, Asus PG279Q. Bärbar Dator Lenovo Yoga 720 Nas FreeNas 4 Tb