Удаление ненужных данных из массива в php

Этот код создает массив:

$size = sizeof($include_quotes);
  for ($i=0; $i<$size; $i++) {
    $quotes = $GLOBALS[$include_quotes[$i]]->quote($method);
    if (is_array($quotes)) $quotes_array[] = $quotes;
  }
}   

Если я

print_r($quotes_array);

я получаю следующее:

Array ( [0] => Array ( [id] => advshipper [methods] => Array ( [0] => Array ( [id] => 1-0-0 [title] => Trade Shipping [cost] => 20 [icon] => [shipping_ts] => [quote_i] => 0 ) [1] => Array ( [id] => 2-0-0 [title] => 1-2 working days [cost] => 3.2916666666667 [icon] => [shipping_ts] => [quote_i] => 1 ) [2] => Array ( [id] => 4-0-0 [title] => 2-3 working days [cost] => 2.4916666666667 [icon] => [shipping_ts] => [quote_i] => 2 ) [3] => Array ( [id] => 8-0-0 [title] => Click & Collect [cost] => 0 [icon] => [shipping_ts] => [quote_i] => 3 ) ) [module] => Shipping [tax] => 20 ) )

В некоторых случаях я хочу только данные в поле 0 быть переданным на следующую часть кода. Однако, используя

 $sliced_quotes_array = array_slice($quotes_array,0,1);

Все равно возвращает все результаты.

Какой правильный способ получить просто:

Array ( [0] => Array ( [id] => advshipper [methods] => Array ( [0] => Array ( [id] => 1-0-0 [title] => Trade Shipping [cost] => 20 [icon] => [shipping_ts] => [quote_i] => 0 )

Любая помощь очень ценится, потому что я пробовал множество разных способов и пока не повезло.

Использование следующего по-прежнему возвращает те же результаты

$testarray = array(0 => $quotes_array[0]);
print_r($testarray);

3 ответа

Решение

После некоторого чтения массивов и после небольшой попытки я нашел решение своей проблемы.

Я использовал:

unset($quotes_array[0]['methods'][1]);

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

Вот ваш массив:

введите описание изображения здесь

Когда вы говорите: "Я только хочу, чтобы данные в поле 0 передавались в следующую часть кода", вы имели в виду, что вы хотите, чтобы эти данные передавались только в следующий раз, верно?:

Array (
    [0] => Array (
        [id] => advshipper
        [module] => Shipping
        [tax] => 20
    )
)

Это то, что вы хотите?

$newArray = array();

foreach ($quotes_array[0] as $items)
{
    if (!is_array($items))
    {
        $newArray[] = $items;
    }

}

$newArray будет содержать эти данные.

ОБНОВИТЬ

Хорошо, понял. Вы можете просто использовать это:

$newArray = $quotes_array[0]['methods'][0];

Почему бы просто не использовать конструктор массива и явно включить то, что вам нужно:

array(0 => $quotes_array[0]);
Другие вопросы по тегам