Как сжать повторяющиеся ключи в многомерном массиве?

Нарушение изменений в LocalDB: применяется к SQL 2014 ; просмотрите эту статью и попытайтесь использовать (localdb)\mssqllocaldb в качестве имени сервера для подключения к автоматическому экземпляру LocalDB, например:


   этот ответ SO , который предлагает изменить имя по умолчанию вашего экземпляра LocalDB, чтобы избежать других несоответствий версии, которые  может возникнуть в будущем;  упомянутый не как источник проблемы, а для повышения осведомленности о потенциальных столкновениях, которые может привести к тому, что множественная версия SQL, установленная на одной машине-разработчике, может привести к ... и чему-то привыкнуть, чтобы избежать некоторых. 

Еще одна вещь, о которой стоит упомянуть, - если вы получили свой экземпляр в непригодном для использования состоянии из-за того, что пытаетесь исправить эту проблему, возможно, стоит начать переустановку, переустановить, а затем попытаться использовать значение mssqllocaldb вместо из v12.0 и посмотреть, исправляет ли это вашу проблему.

0
задан Mickael Leger 13 July 2018 в 14:10
поделиться

1 ответ

Используйте array_key_exists(), чтобы проверить, существует ли ключ до его установки. Если этого не существует, создайте запись для нового ключа с новым значением в массиве из одного элемента. Если это действительно существует, просто добавьте новое значение в конец существующего массива.

// Assume $key is your key and $value is your value.
while (...) {
    if (array_key_exists($key, $array)) {
        $array[$key][] = $value; // Append the new value to the existing array.
    } else {
        $array[$key] = [$value]; // Create a new array with the new value in it.
    }
}

Редактирование: я думал, что использование синтаксиса добавления массива на неопределенный ключ вызовет предупреждение, но оно появится это не так, поэтому вы можете просто упростить следующее:

while (...) {
    $array[$key][] = $value;
}
1
ответ дан Alex Howansky 17 August 2018 в 12:42
поделиться
  • 1
    Извините, немного смущенный этим ответом. Я сделал тест, кажется, что вам не нужен блок if, потому что: $array[$key] = [$value]; - это то же самое, что просто делать $array[$key][] = $value; (даже если $array[$key] не определен, никаких предупреждений / уведомлений) ... так что действительно все, что вы нужно $array[$key][] = $value;, поскольку оно охватывает обе ситуации и добавляет или определяет в один ход ...... ?? – IncredibleHat 13 July 2018 в 13:53
  • 2
    Как ни странно, я был уверен, что при синтаксисе добавления массива на несуществующий ключ генерируется предупреждение, но кажется, что вы правы. – Alex Howansky 13 July 2018 в 13:58
  • 3
    Ну, я тестирую на сервере php 5.6 .... не имею доступа к 7.2 прямо сейчас ... так, может быть? Я тоже всегда думал, что вам нужно определить массив и ключи перед назначением, пока я не начал делать это в одной строке и не понял никаких предупреждений lol. Я должен действительно сделать некоторые тесты на 7.2, хотя. – IncredibleHat 13 July 2018 в 14:01
Другие вопросы по тегам:

Похожие вопросы: