У меня есть массив $ produtcs, как показано ниже
Array
(
[0] => Array
(
[Sku] => 149826761
[Price] => 777.00
)
[1] => Array
(
[Sku] => 149826762
[Price] => 862.00
)
[2] => Array
(
[Sku] => 149826763
[Price] => 661.00
)
)
Мне нужно создать массив из вышеуказанного массива, который содержит SKU, цену в качестве ключей и собрать все SKU в массиве как значение.
Мне нужно сделать массив типа SKU -> [149826761,149826762,149826763]
Покажи, что ты пробовал? Мы здесь, чтобы помочь вам, если у вас есть проблемы с испытанным кодом.
Я считаю, что вы ищете array_column.
Это изолирует один столбец / ключ от массива и создает плоский массив из входного массива.
$new = array_column($arr, "Sku");
var_dump($new);
Выход:
array(3) {
[0]=>
int(149826761)
[1]=>
int(149826762)
[2]=>
int(149826763)
}
Но вы еще пишете, что хотите цену в массиве. Полагаю, вы этого хотите:
array(3) {
[149826761]=>
string(6) "777.00"
[149826762]=>
string(6) "862.00"
[149826763]=>
string(6) "661.00"
}
Чтобы получить результат выше, вам нужно использовать третий параметр столбца массива следующим образом:
$new = array_column($arr,"Price", "Sku");
var_dump($new);
Нет, мне нужно создать то, что задано в этом вопросе, но в php stackoverflow.com/questions/26898363/…
@Magecode ваш вопрос непонятен. Обновите свой вопрос, указав ожидаемый результат
Вы можете использовать foreach для группировки элементов по цене. Например:
// source data
$products = [
[
'Sku' => 149826761,
'Price' => 777.00
],
[
'Sku' => 149826762,
'Price' => 862.00
],
[
'Sku' => 149826763,
'Price' => 661.00
]
];
// array grouping
$items = [];
foreach ($products as $product) {
$key = $product['Price'];
$items[$key][] = $product['Sku'];
}
Результат:
Array
(
[777] => Array
(
[0] => 149826761
)
[862] => Array
(
[0] => 149826762
)
[661] => Array
(
[0] => 149826763
)
)
Использование вложенного цикла выполняет работу для любого количества ключей:
<?php
# The existent data.
$data = [
["Sku" => 149826761, "Price" => 777.00],
["Sku" => 149826762, "Price" => 862.00],
["Sku" => 149826763, "Price" => 661.00]
];
# Initialise a new array.
$array = [];
# Iterate over every associative array in the data array.
foreach ($data as $element) {
# Iterate over every key-value pair of the associative array.
foreach ($element as $key => $value) {
# Ensure the sub-array specified by the key is set.
if (!isset($array[$key])) $array[$key] = [];
# Insert the value in the sub-array specified by the key.
$array[$key][] = $value;
}
}
?>
Ожидаемый результат:
Array (
[Sku] => Array (
[0] => 149826761
[1] => 149826762
[2] => 149826763
)
[Price] => Array (
[0] => 777.00
[1] => 862.00
[2] => 661.00
)
)
Не могли бы вы опубликовать, какой результат вы ожидаете?