#php #arrays
#php #массивы
Вопрос:
<?php
$a = [["product"=>"another2", "id"=>112],["product"=>"xyz", "id"=>113], ["product"=>"lmn", "id"=>113],["product"=>"abc", "id"=>113], ["product"=>"another", "id"=>112]];
$data = [];
$products = [];
foreach ($a as $b) {
$products[]["product"] = $b["product"];
$data[$b["id"]] = $products;
}
echo "<pre>";
print_r($data);
и результат
Array ( [112] => Array ( [0] => Array ( [product] => another2 ) [1] => Array ( [product] => xyz ) [2] => Array ( [product] => lmn ) [3] => Array ( [product] => abc ) [4] => Array ( [product] => another ) ) [113] => Array ( [0] => Array ( [product] => another2 ) [1] => Array ( [product] => xyz ) [2] => Array ( [product] => lmn ) [3] => Array ( [product] => abc ) ) )
я хочу сделать 1 карман с теми же идентификаторами.
сделайте 1 карман, если идентификатор равен 112 из всего массива. например, мне нужно
Array
(
[112] => Array
(
[0] => Array
(
[product] => xyz
)
[2] => Array
(
[product] => lmn
)
[3] => Array
(
[product] => abc
)
)
[113] => Array
(
[0] => Array
(
[product] => another
)
[1] => Array
(
[product] => another2
)
)
)
)
Как я могу получить этот вывод? кто-нибудь может помочь мне сделать это возможным. Мне нужен 1 массив, если идентификатор такой же, как и в другом массиве, когда идентификатор отличается
Ответ №1:
Вы очень близки. Вам не нужно определять $products
каждый раз. Просто выполните цикл по массиву (сохраняя $k
как ключ) и назначьте.
Рассмотрим:
$a = [["product"=>"another2", "id"=>112],["product"=>"xyz", "id"=>113], ["product"=>"lmn", "id"=>113],["product"=>"abc", "id"=>113], ["product"=>"another", "id"=>112]];
$data = [];
foreach ($a as $k => $b) {
$data[$b["id"]][$k]["product"] = $b["product"];
}
Теперь $data
будет вывод вашего желания.
Живой пример: 3v4l
Ответ №2:
Проверьте ниже рабочий код:
$a = [["product"=>"another2", "id"=>112],["product"=>"xyz", "id"=>113], ["product"=>"lmn", "id"=>113],["product"=>"abc", "id"=>113], ["product"=>"another", "id"=>112]];
$products = [];
foreach ($a as $b) {
$products[$b["id"]][]["product"] = $b["product"];
}
echo "<pre>";
print_r($products);
Ответ №3:
Попробуйте это
$arr1 = [];
foreach($arr as $k => $v){
if(array_key_exists($v['id'], $arr1))
$arr1[$v['id']][]['product'] = $v['product'];
else
$arr1[$v['id']][]['product'] = $v['product'];
}