добавление элементов объекта в массив, когда они не имеют значений keys = >

Несколько лет спустя в настоящее время официально существует лучшее решение. DOM4 Mutation Observers заменяют устаревшие события мутации DOM3. Они , которые в настоящее время реализованы в современных браузерах как MutationObserver (или как префикс поставщика WebKitMutationObserver в старых версиях Chrome):

MutationObserver = window.MutationObserver || window.WebKitMutationObserver;

var observer = new MutationObserver(function(mutations, observer) {
    // fired when a mutation occurs
    console.log(mutations, observer);
    // ...
});

// define what element should be observed by the observer
// and what types of mutations trigger the callback
observer.observe(document, {
  subtree: true,
  attributes: true
  //...
});

В этом примере прослушивается DOM изменения на document и все его поддерево, и оно будет срабатывать при изменении атрибутов элемента, а также структурных изменений. Спецификация проекта имеет полный список действительных свойств для прослушивания мутаций :

childList

  • Установите значение true, если мутации для целей дети должны быть обнаружены.

attributes

  • Установите на true, если необходимо соблюдать мутации для атрибутов цели.

characterData

  • Установите на true, если необходимо наблюдать мутации данных цели.

поддерево

  • Установите, чтобы true, если мутации не просто нацелены, но также должны наблюдаться потомки цели.

attributeOldValue

  • Установите значение true если attributes установлено значение true и значение атрибута цели до того, как необходимо записать мутацию.

characterDataOldValue

  • Установите значение true, если characterData установлено значение true и данные цели до того, как необходимо записать мутацию.

attributeFilter

  • Установить список локальных имен атрибутов (без пространства имен) если не все атрибутные мутации
blockquote>

(Этот список действует с апреля 2014 года; вы можете проверить спецификацию на любые изменения.)

0
задан Tom N. 18 January 2019 в 15:34
поделиться

2 ответа

Вы также можете использовать array_column с (из php 5.6) списком аргументов переменной длины :

Например, для изображений, которые содержат массив объектов где каждый объект имеет свойство urls и содержит массив URL-адресов изображений:

foreach ($prices->groups as $group) {
    $groupItem = array();
    $groupItem["number"] = $group->number;
    $groupItem= array_merge($groupItem, ...array_column($group->images, "urls"));    
}

Демо

0
ответ дан The fourth bird 18 January 2019 в 15:34
поделиться

Вне внешнего цикла, введите значение в пустой массив:

$groupItem["urls"] = [];

Затем используйте оператор ссылки на пустой массив, чтобы добавить новые значения в конец массива:

foreach($group->images as $images){
    $groupItem["urls"][] = $images->urls; // add this url to the end of the list
}
[ 117] В качестве альтернативы, используйте array_push():

foreach($group->images as $images){
    array_push($groupItem["urls"], $images->urls);
}

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

array_push($groupItem["urls"], ...$images->urls);
0
ответ дан Alex Howansky 18 January 2019 в 15:34
поделиться
Другие вопросы по тегам:

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