удалить элемент из массива объектов на основе элемента внутри объекта - PullRequest
0 голосов
/ 26 октября 2018

У меня есть массив объектов, для каждого объекта у меня есть имя, категория, цена и пара других вещей. и из этого массива я хочу удалить объекты, которые имеют определенную категорию.

public function getCSV()
{
    $contents = Storage::disk('dropbox')->get('InventoryReport.csv');
    $lines = explode(PHP_EOL, $contents);
    $items = array();

    // categories to ignore when importing
    $ignore = ['Misc', 'Soft Drinks', 'Juices', 'Water', 'Snack', 'Energy Drink', 'Tobacco', 'Gum', 'Account Payment'];

    foreach ($lines as $line) 
    {
        $items[] = str_getcsv($line);
    }

    array_shift($items);
    array_pop($items);


    // foreach ($items as $item)
    // {
    //   $i = Item::where('upc', $item[7])->first();


    //       if($i == null)
    //       {
    //             $name = str_slug($item[8], '-');

    //             // $inventory = Item::create(
    //             //     ['upc' => $item[7],
    //             //         'name' => $item[8],
    //             //         'price' => $item[9],
    //             //         'stock' => $item[10],
    //             //         'cost' => $item[11],
    //             //         'category' => $item[2],
    //             //         'slug' => $name
    //             //     ]
    //             // );
    //       }

    // }



}

выше мой код. Я хочу удалить все элементы в массиве, который имеет категорию внутри массива $ ignore. прежде чем я сохраню его в базе данных.

1 Ответ

0 голосов
/ 26 октября 2018

Замените это:

foreach ($lines as $line) 
{
    $items[] = str_getcsv($line);
}

на:

foreach ($lines as $line) {
    $item = str_getcsv($line);
    if (count($item) > 1 && !in_array($item[2], $ignore)) {
        $items[] = $item;
    }
}

Теперь $items будет содержать только элементы, которые вы ищете.

Примечание: просмотритевызовы array_shift и array_pop все еще необходимы, в зависимости от того, к какой категории относились эти два элемента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...