Удаление ненужных данных из массива в 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]);