Ne bu dizi ile sorun olabilir?

3 Cevap php

Bu bendeki kaynak $pData dizidir:

Array
(
    [code] => 105132
    [globalImages] => Array
        (
            [0] => 1148-1578-image_41ddeeef69eb94a8d9ccc1503d099810.jpg
        )

    [envImages] => Array
        (
            [0] => 1148-0-image_72e95c6424ec7bcd90994f1c0a3f4544.jpg
        )

    [attribs] => Array
        (
            [0] => Array
                (
                    [0] => Array
                        (
                            [id] => 1578
                            [uniqCode] => 105132-1578
                            [parentId] => 0
                            [type] => Colour
                        )
                )
        )
)

Ben aşağıdaki kullanarak bir değer çağırdığınızda (line 337):

<?php echo strtolower($pData['attribs'][0][0]['type']);?>

PHP Hata günlüğü aşağıdaki satırı vardır:

[13-Jan-2010 11:48:21] PHP Notice:  Undefined offset: 0 in D:\apps\path\to\file\pages\product.php on line 337

Neyi yanlış yapıyor olabilir? Bildiğim kadarıyla ben gördüğünüz gibi, bu basit bir arama ile yanlış bir şey yoktur. Birisi bir şey balık görmek olabilir?

Herhangi bir giriş için teşekkürler!

EDIT 01:

Ben echo doğru sonuç üretir söylemek unuttum. Ama aynı zamanda hata günlüğünde belirtilen girdi giriş yapar.

var_dump($pData['attribs']) çıkışı:

array(1) {
  [0]=>array(2) {
    [0]=>array(22) {
      ["id"]=>string(4) "1578"
      ["uniqCode"]=>string(11) "105132-1578"
      ["parentId"]=>string(1) "0"
      ["type"]=>string(6) "Colour"
      ["title"]=>string(5) "Beech"
      ["swatch"]=>string(22) "variant-437-swatch.jpg"
      ["width"]=>string(4) "1830"
      ["depth"]=>string(3) "610"
      ["height"]=>string(3) "740"
      ["floorToSeat"]=>string(1) "0"
      ["unit"]=>string(2) "mm"
      ["weight"]=>float(89)
      ["volume"]=>float(2.311)
      ["groupPack"]=>int(1)
      ["fobkl"]=>string(3) "407"
      ["br3"]=>string(3) "441"
      ["br2"]=>string(3) "467"
      ["br1"]=>string(3) "496"
      ["rcp"]=>string(3) "515"
      ["gwm"]=>string(3) "592"
      ["gem"]=>string(3) "618"
      ["images"]=>array(1) {
        [0]=>string(52) "1148-1578-image_41ddeeef69eb94a8d9ccc1503d099810.jpg"
      }
    }
    [1]=>array(22) {
      ["id"]=>string(4) "1577"
      ["uniqCode"]=>string(11) "105132-1577"
      ["parentId"]=>string(1) "0"
      ["type"]=>string(6) "Colour"
      ["title"]=>string(13) "Natural Maple"
      ["swatch"]=>string(22) "variant-436-swatch.jpg"
      ["width"]=>string(4) "1830"
      ["depth"]=>string(3) "610"
      ["height"]=>string(3) "740"
      ["floorToSeat"]=>string(1) "0"
      ["unit"]=>string(2) "mm"
      ["weight"]=>float(155.06)
      ["volume"]=>float(20.305)
      ["groupPack"]=>int(1)
      ["fobkl"]=>string(3) "407"
      ["br3"]=>string(3) "441"
      ["br2"]=>string(3) "467"
      ["br1"]=>string(3) "496"
      ["rcp"]=>string(3) "515"
      ["gwm"]=>string(3) "592"
      ["gem"]=>string(3) "618"
      ["images"]=>array(1) {
        [0]=>string(52) "1148-1577-image_9c4fc8337e5c106ea6b69863e68f54bb.jpg"
      }
    }
  }
}

3 Cevap

Bir ayıklayıcı hata bulmak için yardımcı olabilir, örneğin xdebug ve netbeans önyüz olarak.

Söz konusu kaynak satırı gerçekten echo strtolower($pData['attribs'][0][0]['type']), örneğin doğrulayın gibi bir hata işleyicisi kullanarak:

function myErrorHandler($errno, $errstr, $errfile, $errline, $errcontext)
{
  if ( E_NOTICE===$errno && is_readable($errfile) ) {
    $source = file($errfile);
    for($i=max(0,$errline-4); $i<$errline+3; $i++ ) {
      if ( isset($source[$i]) ) {
        if ( $i+1===$errline ) {
          echo ' >>> ';
        }
        echo $source[$i];
      }
    }
  }

  return false;
}
$old_error_handler = set_error_handler('myErrorHandler');

Ben yanlış bir şey göremiyorum - tek olasılık bunu bir ilişkisel dizin (ziyade sayısal) yapım, bir dize '0 olarak 0 tuşları 'birini veya her ikisini tanımlanmış olmasıdır

$pData['attribs']['0']['0']['type'] = 'Colour';

Bu durumda da bir dize olarak başvurmak gerekiyordu

Hemen yankı önce sıra üzerinde print_r yapmak, bu yüzden size işlevi aslında üzerinde çalıştığı dizi görmek eminiz. Bu kapsam belirleme sorunu (yani $ pData bir işlev içinde bir yerel dizidir ve bu işlev dışında yankı diyoruz) olabilir.