Можно ли вносить изменения в «структуру» массива ассоциативных карт (массовое переименование ключей или их полное удаление) без линейного перебора всего массива и копирования информации в новый массив? Есть ли другая структура данных PHP, такая как таблица или что-то в этом роде, которая поддерживает это?
Чтобы сделать это немного понятнее, могу я взять это:
$arr = array(
array("id" => 1, "something" => "etc"),
array("id" => 2, "something" => "etc"),
array("id" => 3, "something" => "etc"),
array("id" => 4, "something" => "etc"),
array("id" => 5, "something" => "etc"),
...
array("id" => $over9000, "something" => "etc")
);
и превратите его в это:
$newarr = array(
array("id" => 1, "different" => "etc"),
array("id" => 2, "different" => "etc"),
array("id" => 3, "different" => "etc"),
array("id" => 4, "different" => "etc"),
array("id" => 5, "different" => "etc"),
...
array("id" => $over9000, "different" => "etc")
);
БЕЗ этого:
$newarr = array_map(function($i){
return array(
"id" => $i["id"],
"different" => $i["something"]
);
}, $arr);
Мой вариант использования - получение около 70000 строк из базы данных SQL в каком-то формате, который я не могу контролировать, и необходимость сериализации его в JSON определенным образом (ключи имеют разные имена). Кажется, что просто перебрать в цикле массив всех возвращенных объектов записи и выполнить одну и ту же операцию выборочного копирования для каждого из них - огромная трата от 10 до 15 секунд.
Есть ли способ сделать это в постоянное время? Я взаимодействую с PHPADODb, чтобы получить данные из базы данных, поэтому, если у него уже есть такая структура, которая отделяет схему от данных, это было бы идеально.
something
требуется 10 секунд, это будет точно такое же время для загрузки сdifferent
именем столбца. Что не так с изменением запроса sql или просто изменением массива? - person zerkms   schedule 19.02.2014