2016-09-14 64 views
-3

我正在爲我的一個網站創建日曆,我有一個數組如下。注意:未定義偏移量:0 - PHP - Foreach

array(2) { 
[2017]=> array(1) { 
    ["01"]=> array(1) { 
     [0]=> object(stdClass)#5374 (4) { 
      ["ID"]=> string(3) "409" 
      ["data"]=> string(10) "01/01/2017" 
      ["post_title"]=> string(5) "TESTE" 
      ["guid"]=> string(71) "?post_type=todos_os_cursos&p=409" 
     } 
    } 
} 

[2016]=> array(2) { 
    [10]=> array(2) { 
     [0]=> object(stdClass)#5974 (4) { 
      ["ID"]=> string(3) "153" 
      ["data"]=> string(10) "19/10/2016" 
      ["post_title"]=> string(23) "Mundi Chef Professional" 
      ["guid"]=> string(71) "?post_type=todos_os_cursos&p=153" } 

     [1]=> object(stdClass)#5977 (4) { 
      ["ID"]=> string(3) "145" 
      ["data"]=> string(10) "01/10/2016" 
      ["post_title"]=> string(30) "Mundi Confeiteiro Professional" 
      ["guid"]=> string(71) "?post_type=todos_os_cursos&p=145" 
     } 
    } 

    ["09"]=> array(4) { 
     [0]=> object(stdClass)#5978 (4) { 
      ["ID"]=> string(3) "153" 
      ["data"]=> string(10) "30/09/2016" 
      ["post_title"]=> string(23) "Mundi Chef Professional" 
      ["guid"]=> string(71) "?post_type=todos_os_cursos&p=153" 
     } 
    } 
} 

[....] 

我需要組織這個日曆。例如。

年 - 月 - - 項目 - 月 - - 項目

年[...]

但我沒有收到。每次嘗試訪問這些項目時都會遇到同樣的問題。注意:未定義偏移。

+2

你應該表明導致未定義的偏移誤差的代碼。 *提示*錯誤信息告訴你錯誤發生在哪一行。包括有助於向讀者展示問題的相關代碼(即周圍循環)。 – Sherif

+2

我真的很希望你確保當你訪問10個月以後,你仍然在使用字符串來訪問它們,因爲[array [9]'和array [「09」]']不一樣(http:// www .tehplayground.com /#iryv4NZhl)。只是關心你怎麼不把10當作一個字符串 –

回答

0

我在黑暗中因缺乏正確的代碼而在您的問題中發生了刺傷,並且假設您嘗試使用array[09]來訪問array("09" => array())時導致此錯誤。這些不會工作,因爲09和08 = 0.

爲什麼?這是因爲當你前綴0的整數它不再一個decimal number這是基體10(0-9),但一個Octal number其是基座8(0-7)

採取following code

$myarr = array(0 => 16, 9 => 12, "09" => 51); 

var_dump(09); 
var_dump($myarr[09]); 

正如你可以看到當我們var_dump(09)結果是int(0),因爲08和09在八進制數系統中是無效的。所以當我們走$myarr[09]我們實際上是$myarr[0]然後我們得到0鍵下的值。

您未定義的偏移0通知最有可能是因爲這個,09 = int(0)所以你試圖訪問未定義的數組中的值。

還重申,我commentarray[9]是不一樣的,但array["09"]array[10]一樣array["10"]example

$mayarr = array("09"=>22); 
var_dump($mayarr); 
var_dump($mayarr[9]); 

$mayarr = array("09"=>22, 9=>106, 10=> 3, "10"=> 50); 
var_dump($mayarr); 
var_dump($mayarr[9]); 
var_dump($mayarr[10]); 
var_dump($mayarr["10"]); 

如果你打算使用數字作爲鍵,你真的應該是一致的,整數或字符串