Avatar billede hoppe11 Nybegynder
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?
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 12:27 #1
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;
}
Avatar billede jakobdo Ekspert
15. maj 2009 - 13:02 #2
Og hvilken linje er det fejlen kommer i ?

Er det array_sum() ?
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 13:14 #3
ja.. i linjen med array()
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 13:14 #4
array_sum()
Avatar billede jakobdo Ekspert
15. maj 2009 - 13:27 #5
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;
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 13:30 #6
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?
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 13:31 #7
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
Avatar billede jakobdo Ekspert
15. maj 2009 - 13:40 #8
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.
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 13:50 #9
Array
(
    [2] => Array
        (
            [1] => -569.00
            [5] => 1000.00
        )

    [1] => Array
        (
            [3] => -179.00
            [5] => 500.00
        )

)
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 13:52 #10
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"
  }
}
Avatar billede zkill Nybegynder
15. maj 2009 - 13:55 #11
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'?
;)
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 14:07 #12
nej, fordi den giver den korrekte sum i første loop i løkken
Avatar billede zkill Nybegynder
15. maj 2009 - 14:12 #13
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..
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 14:13 #14
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
Avatar billede zkill Nybegynder
15. maj 2009 - 14:16 #15
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..
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 14:17 #16
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"
  }
}
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 14:23 #17
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
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 14:25 #18
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;
Avatar billede zkill Nybegynder
15. maj 2009 - 14:28 #19
hva er værdien af din $modkonto_id ?
Avatar billede zkill Nybegynder
15. maj 2009 - 14:28 #20
$sum_arr[$modkonto_id] = 1;
Melder den fejl.?
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 14:31 #21
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
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 14:32 #22
$modkonto_id er 1 i første foreach og 2 i det efterfølgende
Avatar billede zkill Nybegynder
15. maj 2009 - 14:32 #23
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..
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 14:37 #24
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
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 14:38 #25
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>
<?
    }
?>
Avatar billede zkill Nybegynder
15. maj 2009 - 14:46 #26
hvor tæller du din $modkonto_id op.?
Avatar billede zkill Nybegynder
15. maj 2009 - 14:53 #27
har du en foreach udenom denne foreach.?
Avatar billede zkill Nybegynder
15. maj 2009 - 15:05 #28
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)..
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 15:09 #29
jeg tror du har ret.. prøver lige at kigge efter det
Avatar billede hoppe11 Nybegynder
15. maj 2009 - 16:33 #30
smid et svar, zkill..

fandt noget suppe et sted og fik det rettet :)
Avatar billede zkill Nybegynder
18. maj 2009 - 15:38 #31
ok..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester