2016-09-14 2 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

Вы должны показать код, который вызвал неопределенные ошибки смещения. * hint * сообщение об ошибке сообщает вам, в какой строке произошла ошибка. Включите соответствующий код (т. Е. Окружающий цикл), который поможет продемонстрировать проблему читателю. – 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), поэтому вы пытаетесь получить доступ к значению в массиве, который не определен.

также, чтобы подтвердить мой comment, array[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"]); 

если ваш собирается использовать цифры в качестве ключей вы действительно должны быть последовательными, целое число или строка

Смежные вопросы