15. maj 2009 - 12:25
Der er
30 kommentarer og 1 løsning
Cannot use a scalar value as an array
men jeg kan ikke finde nogle fejl? jeg kører et script nøjagtigt magen til bare en værdi er skiftet ud, men der får jeg ingen fejl?? hvad gør jeg får fejlen?
Annonceindlæg tema
og måske lige for at få lidt kode med.. det drejer sig om følgende.. jeg har som sagt en løkke nøjagtig magen til tidligere hvor bare $modkonto_id er en anden foreach($gruppe_arr as $gruppe_id => $gruppe) { $sum_arr[$gruppe_id][$modkonto_id] = $res_konto_arr[$gruppe_id] ? array_sum($res_konto_arr[$gruppe_id]):0; }
Og hvilken linje er det fejlen kommer i ? Er det array_sum() ?
ja.. i linjen med array()
Hvad med at lave: $sum_arr[$gruppe_id][$modkonto_id] = (isset($res_konto_arr[$gruppe_id]) && is_array($res_konto_arr[$gruppe_id])) ? array_sum($res_konto_arr[$gruppe_id]):0;
jeg får samme fejl... men akkurat (copy/paste) samme løkke er tidligere i mit script bare $modkonto_id er ændret.. der kommer ingen fejl $gruppe_arr indeholder 2 værdier og der meldes først fejl i andet og sidste løkke?
altså.. jeg får en sum i første loop, men i det andet og sidste loop i den sidste løkke får jeg fejl.. yderst mystisk
Er du sikker på det er tal som er i dit array ? Prøv at lav en var_dump($res_konto_arr); i hvert gennemløb og fjern udregningen midlertidigt.
Array ( [2] => Array ( [1] => -569.00 [5] => 1000.00 ) [1] => Array ( [3] => -179.00 [5] => 500.00 ) )
array(2) { [2]=> array(2) { [1]=> string(7) "-569.00" [5]=> string(7) "1000.00" } [1]=> array(2) { [3]=> string(7) "-179.00" [5]=> string(6) "500.00" } }
foreach($gruppe_arr as $gruppe_id => $gruppe) { $sum_arr[$gruppe_id][$modkonto_id] = $res_konto_arr[$gruppe_id] ? array_sum($res_konto_arr[$gruppe_id]):0; } Evt fordi du skal skifte '$res_konto_arr' ud med '$gruppe_arr'? ;)
nej, fordi den giver den korrekte sum i første loop i løkken
ok.. tænkte bare siden du hentede id'et ud af gruppe_arr og brugte det i res-konto_arr... prøv lige at lav disse to prints.. var_dump($gruppe_arr); var_dump($res_konto_arr); og smid dataen her inde..
eneste grund til at løber igennem $gruppe_arr er fordi jeg skal have gruppe_id ud som skal bruges til at hente en værdi i et andet array
igen.. prøv lige at smid et dump af de 2 arrays... for at se om de nu indeholder det samme.. for der det ser ud til fejlen sker..
array(2) { [2]=> string(19) "test" [1]=> string(14) "test2" } array(2) { [2]=> array(1) { [1]=> string(8) "-1000.00" } [1]=> array(1) { [1]=> string(7) "-300.00" } }
hvis jeg escaper den sidste del af linjen får jeg nøjagtig samme fejl $sum_arr[$gruppe_id][$modkonto_id] = 1;//$res_konto_arr[$gruppe_id] ? array_sum($res_konto_arr[$gruppe_id]):0; Warning: Cannot use a scalar value as an array in
så snart jeg tilføjer 2. dimension i $sum_arr får jeg fejl melder fejl $sum_arr[$gruppe_id][$modkonto_id] = 1; ingen fejl $sum_arr[$gruppe_id] = 1;
hva er værdien af din $modkonto_id ?
$sum_arr[$modkonto_id] = 1; Melder den fejl.?
i den første foreach kommer $sum_arr til at se sådan ud $sum_arr[2][1] $sum_arr[1][1] i det efterfølgende $sum_arr[2][2] $sum_arr[1][2] <--- melder fejl
$modkonto_id er 1 i første foreach og 2 i det efterfølgende
jeg får stadig kun det indtryk af at en af dine variabler indeholder en forkert værdi eller blir ændret.. derfor jeg spøger efter dumps af dem..
i min foreach udskriver jeg array'et keys således: <?='$sum_arr['.$gruppe_id.']['.$modkonto_id.']'?> - for at få første foreach() $sum_arr[2][1] $sum_arr[1][1] anden foreach() $sum_arr[2][2] $sum_arr[1][2] <--- melder fejl linjen som giver fejl: $sum_arr[$gruppe_id][$modkonto_id] = 1; og fjerner man den sidste dimension i array'et får jeg ingen fejl? $sum_arr[$gruppe_id] = 1; virkelig en mystisk fejl.. har heller aldrig set den før
hele koden... <? foreach($gruppe_arr as $gruppe_id => $gruppe) { $sum_arr[$gruppe_id][$modkonto_id] = 1; ?> <td class="<?=$td_class?> cell_yellow" style="text-align:right"><?=str_num($sum_arr[$gruppe_id][$modkonto_id], 2)?> <?='$sum_arr['.$gruppe_id.']['.$modkonto_id.']'?></td> <? } ?>
hvor tæller du din $modkonto_id op.?
har du en foreach udenom denne foreach.?
Ok.. tror måske jeg har fundet grunden til fejlen.. når du bruger $sum_arr som et array $sum_arr[index][index2].. så virker det fint.. MEN hvis du på noget tidspunkt, kommer til at sætte $sum_arr lig med en int.. så får du den fejl du får.. så søg din kode igennem efter et sted hvor du evt ka komme til at sætte $sum_arr = int. f.eks. $id = 2; $sum_arr = $id Dette kunne f.eks. typisk ske i en if sætning.. if($sum_arr = $id) istedet for if($sum_arr == $id)..
jeg tror du har ret.. prøver lige at kigge efter det
smid et svar, zkill.. fandt noget suppe et sted og fik det rettet :)
Vi tilbyder markedets bedste kurser inden for webudvikling