$input = [
'111',
'222',
];
$array1 = [
'new',
'confirmed'
];
$array2 = [
'7777',
'XXXX'
];
$params = [
'state',
'warehouse'
];
Array
(
[111] => Array
(
[state] => 'new'
[warehouse] => '7777'
)
[222] => Array
(
[state] => 'confirmed'
[warehouse] => 'XXXX'
)
)
foreach ($input as &$item) {
$id[] = $item;
$item = $params;
}
Array
(
[0] => Array
(
[0] => state
[1] => warehouse
)
[1] => Array
(
[0] => state
[1] => warehouse
)
[2] => Array
(
[0] => state
[1] => warehouse
)
)
for ($i = 0; $i<count($key); $i++) {
$array[$key[$i]] = $value[$i];
}
$input = [
'111',
'222',
];
$arrays = [
[
'new',
'confirmed'
],
[
'7777',
'XXXX'
]
];
$params = [
'state',
'warehouse'
];
$result = [];
for ($i = 0; $i < count($input); $i++) {
$key = $input[$i];
$result[$key] = [];
for ($j = 0; $j < count($params); $j++) {
$result[$key][$params[$j]] = $arrays[$j][$i];
}
}
print_r($result);
for ($i = 0; $i < count($input); $i++) {
$key = $input[$i];
$result[$key] = [];
for ($j = 0; $j < count($params); $j++) {
$result[$key][$params[$j]] = $arrays[$j][$i];
}
}
foreach ($input as $i => $key) {
$result[$key] = [];
foreach ($params as $j => $param) {
$result[$key][$param] = $arrays[$j][$i];
}
}
ну это сказки же.
и у вас тоже ненужные присвоения (:
Это не то замедление, о котором вообще стоит говорить.
Вы его увидите только на цикле, который вообще нихчего не делает. Во всех остальных случаях вы его с электронным микроскопом не увидите.
Бессмысленность строчки $result[$key] = []; - это для вас "тайное знание"? :)
Есть такое выражение "экономить на спичках", когда мы начинаем оптимизировать то, что и так работает быстро,
для обхода массива нужно использовать итератор
не вижу
Верно, именно поэтому замечание про "более лучше производительный" не имеет смысла и является скорее вредным, поскольку создает классическое суеверие.
не нужно.
нужно использовать то, что подходит для конкретной задачи
если я, к примеру, хочу изменять значения массива и при этом видеть изменения сразу, то нужно использовать обращение по ключу.
ну если так не видите, то просто уберите её из кода, и запустите его :)
чтобы увидеть, что код работает неэффективно.
С чего вы взяли, что для изменения нужно обращаться по ключу?
инициализация должна быть явной.
Читайте внимательнее. Мне надо не для изменения. А для изменения, которое видно сразу, на по окончании перебора.
Разумеется должна быть. Она там и есть. А эта строчка лишняя.
Вы бы хоть код привели
Если в неинициализированной переменной
https://3v4l.org/i5RPC
foreach ($array as $i => &$v) {
if ($i === 0) {
$array[1] = 3;
}
echo "$i: $v\n";
}
Переменная инициализирована.
передавайте в переменную не значение, а ссылку
неявные манипуляции
Мне не нужно передавать ссылку. Мне нужно совсем другое. Не надо пытаться подменить задачу только для того, чтобы код соответствовал выученной вами догме.
Вы раньше производили впечатление адекватного человека, но сейчас я вижу что вы просто повторяете заученные религиозные догмы. Поскольку в большинстве случаев это работает, то отсутствие реального понимания не так бросалось в глаза.
Как я уже говорил, аргументы против религии бесполезны, так что всего хорошего
function combine($ids, $keys, ...$values) {
return array_combine(
$ids,
array_map(
fn($i) => array_combine($keys, array_column($values, $i)),
array_keys($ids)
)
);
}
$result = combine($input, $params, $array1, $array2);