Чего я хочу достичь?
"product_attributes": [
{
"title": "Color",
"records": [
{
"attribute_name": "black",
"mpr": "100"
},
{
"attribute_name": "green",
"mpr": "200"
}
]
},
{
"title": "RAM",
"records": [
{
"attribute_name": "16GB",
"mpr": "10"
}
]
},
{
"title": "RAM",///remove this whole obeject
"records": []
}
]
что я пробовал: я извлекаю целые атрибуты из БД, затем сравниваю их с атрибутом продукта и создаю этот формат сейчас, проблема в том, что когда я начинаю обходить егоСравнение результата со всем атрибутом, который создает пустой объект каждый раз, когда выполняется условие my if ().
как я могу удалить пустой объект с пустым массивом записей и переиндексировать мой окончательный массив?
вот мой код:
$allattributes = DB::table('product_attributes')->where('subcategory_id', $product->subcat_id)->get(['attribute_title']);
$valuesnew = DB::table('current_product_attribute_values')->where('product_id', $product->id)->get();
$emptybool=false;
// checking for empty attributes
if ($valuesnew->count() > 0) {
// first foreach for 3 value
foreach ($allattributes as $name) {
//echo $name->attribute_title;
$boo = false;
// 40 record loop
$records = array();
foreach ($valuesnew as $compare) {
// if attibute title are same
if ($compare->attribute_title == $name->attribute_title) {
if ($boo == false) {
$titledata = $name->attribute_title;
$holddata['title'] = $titledata;
$boo = true;
}
$records[] = array("attribute_name" => $compare->attribute_value, "mpr" => $compare->attribute_mrp);
}
}
$holddata['records'] = $records;
$final[] = $holddata;
}
} else {
$final = array();
}
что я пробовал:
foreach($final as $k=>$arr){
//$final=array_filter($arr,'count');
if(array_filter($arr,'count') || array_values(array_filter($arr))){
unset($arr[$i]);
}
$i++;
}
print_r($final);//failed
ИСПЫТАТЕЛЬНЫЙ СЛУЧАЙ:
Извлечение всех атрибутов из подкатегорий, к которым относится продукт.
извлечение всех атрибутов товара из таблицы атрибутов товара
и сравнение заголовка всех атрибутов с атрибутами товара при обнаружении той же записи, что и у меняположить это внутри массива.поэтому я достигаю цвет => красный, черный этот тип структуры вместо цвета => красный, цвет => черный
теперь тестовый случай, когда все атрибуты имеют 4 атрибута цвет, размерram, процессор и продукт, имеющие только два цвета и ram, в этом случае мой цикл дает мне пустую запись, так как с последним заголовком я хочу удалить этот объект, имеющий пустую запись.
заранее спасибо:)
![product attribute table](https://i.stack.imgur.com/Keswl.png)
** NEW TRY: **
foreach($final as $k=>$arr){
foreach($arr as $key=>$value){
$count=count($value);
if($count==0){
echo '<pre>';
echo ' am empty object remove me ';
'<br>';
unset($arr[$index]);//failed how can i remove this whole object from the main array
}
}