2012-12-13 2 views
0

У меня есть следующие codelinearray_push многомерный массив

$return_array = array(
      $count_answers => array(
        "name" => $domain, 
        "type" => $type, 
        "class" => $class, 
        "ttl" =>$ttl, 
        "data_lenght" => $data_l 
        ) 
    ); 

Я хочу добавить preference после длины данных с помощью следующего кода

array_push($return_array[$count_answers]['preference'], $preference); 

Предупреждение: array_push() ожидает параметр 1, чтобы быть массивом , null задано в \ functions \ functions.php в строке 367

Почему мой первый параметр не является массивом?

+0

Использование array_push добавит еще одну строку в ваш массив. Все, что вы делаете, добавляет еще один ** атрибут ** к вашей строке. –

ответ

3

Потому что нет ни одного элемента в $return_array индексируются 'preference'. Вы можете добавить $preference с этим вместо

$return_array[$count_answers]['preference'][] = $preference; 

или инициализировать пустой массив первого

$return_array[$count_answers]['preference'] = array(); 

Если вы не хотите, чтобы добавить массив предпочтений, но только один элемент 'preference', добавьте это с

$return_array[$count_answers]['preference'] = $preference; 
+0

Это ответ на мой вопрос thx Olaf Dietsche :) –

+0

Подумайте. '$ return_array [$ count_answers] ['preference'] = array();' Любит эту часть. Помогает мне. +1. –

2

Вам не нужно использовать array_push, вы можете добавить товар напрямую.

$return_array[$count_answers]['preference'] = $preference; 

array_push не позволяет строку в качестве индексов, так что ваш $preference бы на $return_array[$count_answers][0]

на линии 367, ваш не предоставляют массив, но пустой элемент в текущем массиве.

+0

Это тоже ответ на мой вопрос, как и у olaf thx jaudette :) –

+0

О, это была моя проблема. У меня были строковые индексы и я не знал, это запрещено. – Firze

1

Вы должны исправить свой код ниже.

$return_array = array(
     $count_answers => array(
       "name" => $domain, 
       "type" => $type, 
       "class" => $class, 
       "ttl" =>$ttl, 
       "data_lenght" => $data_l 
       ) 
); 

$preference['preference'] = "kkk"; 

Просто измените

$return_array[$count_answers]['preference'] 

с

$return_array[$count_answers] 

в array_push, как показано ниже

array_push($return_array[$count_answers], $preference); 
+0

Я добавил, что входит в мой массив thx для подсказки :) –

+0

если это так, тогда у меня должен быть +1 для этого. –

0

Использование array_push() с многомерным массивом является оксюмороном.

Массивы PHP являются иерархическими, а не многомерными. И array_push добавляет нумерованный элемент с указанным значением. Кроме того, использование array_push() четко объясняется в manual.

Я хочу добавить «предпочтение» после того, как длина данных с помощью следующего кода

Почему вы хотите это сделать с этим кодом? Это неудачно, и причина должна быть очевидной.

код вы должны вы должны использовать это:

$return_array[$count_answers]['preference']=$preference; 
+0

Вопрос был дан ответ –

0
foreach($arr_data_arrays as $key=>$line_arr) { // do an array looping at first 

     $new_arr = array(); // create an array to be included on the second position 
     $new_arr[0] = $line_arr; 

     array_push($arr_data_arrays[$key][1],$new_arr);//include the whole array on the sec position 
}; 

Легко, как это!

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