Найти ключи массива - PullRequest
       5

Найти ключи массива

1 голос
/ 11 апреля 2010

В PHP у меня есть массив, который выглядит так:

$array[0]['width'] = '100';
$array[0]['height'] = '200';
$array[2]['width'] = '150';
$array[2]['height'] = '250';
  • Я не знаю, сколько элементов в массиве.
  • Некоторые элементы можно удалить, что объясняет отсутствующую клавишу [1].

Я хочу добавить новый элемент после этого, например:

$array[]['width'] = '300';
$array[]['height'] = '500';

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

Альтернативным решением было бы найти последний ключ. Я не смог попробовать функцию 'end'.

Ответы [ 5 ]

9 голосов
/ 11 апреля 2010

Правильный способ сделать это:

$array[] = array(
  'width' => 200,
  'height' => 500,
);

потому что вы фактически добавляете новый массив в $array.

5 голосов
/ 11 апреля 2010

Как насчет

$array[] = array("width" => "300", "height" => "500");
3 голосов
/ 11 апреля 2010

Или, просто для полноты и наглядности, используйте временный массив:

$t=array();
$t['width']='300';
$t['height']='500';

А затем добавьте его в основной массив:

$array[]=$t;
2 голосов
/ 11 апреля 2010

Другое решение, полезное, когда вы не можете добавить оба значения в одном выражении:

$a = array();
$array[] &= $a; // Append a reference to the array, instead of a copy

$a['width'] = '300';
$a['height'] = '500';

Но вы также можете получить последний ключ в массиве:

$array[]['width'] = '300';

end($array); // Make sure the internal array pointer is at the last item
$key = key($array);  // Get the key of the last item

$array[$key]['height'] = 300;
1 голос
/ 11 апреля 2010

Если вы не возражаете против потери этих ключей, вы можете легко решить проблему путем повторной индексации.

$array = array_values($array);
$i = count($array);
$array[$i]['width'] = '300';
$array[$i]['height'] = '500';

Однако, если вы не хотите этого делать, вы также можете использовать это:

$array[] = array(
    'width' => '300',
    'height' => '500'
);

, который создаст новый массив и вставит его как второе измерение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...