Как избежать "двойной" индексации массива?

Статус
В этой теме нельзя размещать новые ответы.

Artu

Постоялец
Регистрация
3 Мар 2009
Сообщения
75
Реакции
2
Есть массив,в данном случае со вложенным массивом..Ниже приведен его вывод с print_r.Он выводит сначала цифровые индексы,а потом именные.Как сделать что б были только именные?Нужно, потому что, скрипт преобразования массива в XML,тоже задваивает значения.

Array
(
[order] => Array
(
[0] => Array
(
[0] => 23
[1] => 3
[2] => 2009-04-03 17:39:50
[3] => 127.0.0.1
[4] => Курьер
[5] => Наличные
[6] =>
[7] => 2
[8] => 0
[9] => 0
[10] => 49000
[11] => UAH
[12] => 1
[13] => Данило
[14] => Галицкий
[15] => galich@ukr.net
[16] => Данило
[17] => Галицкий
[18] => Украина
[19] => Львовская
[20] => 23000
[21] => Львов
[22] => ул.Валова,дом 3,кв.1
[23] => Данило
[24] => Галицкий
[25] => Украина
[26] => Львовская
[27] => 23000
[28] => Львов
[29] => ул.Валова,дом 3,кв.1
[30] =>
[31] =>
[32] =>
[33] =>
[orderID] => 23
[customerID] => 3
[order_time] => 2009-04-03 17:39:50
[customer_ip] => 127.0.0.1
[shipping_type] => Курьер
[payment_type] => Наличные
[customers_comment] =>
[statusID] => 2
[shipping_cost] => 0
[order_discount] => 0
[order_amount] => 49000
[currency_code] => UAH
[currency_value] => 1
[customer_firstname] => Данило
[customer_lastname] => Галицкий
[customer_email] => galich@ukr.net
[shipping_firstname] => Данило
[shipping_lastname] => Галицкий
[shipping_country] => Украина
[shipping_state] => Львовская
[shipping_zip] => 23000
[shipping_city] => Львов
[shipping_address] => ул.Валова,дом 3,кв.1
[billing_firstname] => Данило
[billing_lastname] => Галицкий
[billing_country] => Украина
[billing_state] => Львовская
[billing_zip] => 23000
[billing_city] => Львов
[billing_address] => ул.Валова,дом 3,кв.1
[cc_number] =>
[cc_holdername] =>
[cc_expires] =>
[cc_cvv] =>
)

[content] => Array
(
[0] => Array
(
[0] => [735] Lexus GS300
[1] => 49000
[2] => 1
[3] => 0
[4] => 0
[5] => 48
[name] => Lexus GS300
[Price] => UAH 49000.00
[Quantity] => 1
[tax] => 0
[load_counter] => 0
[itemID] => 48
[PriceToShow] => UAH 49000.00
[product_code] => 735
)

)

)

)
 
Массив формируется из БД?
 
если эти массивы- результат из БД(не похоже на это),то для получения результатов из БД используйте mysql_fetch_assoc()
Если же ситуация отличается, то в общем случае можно сделать например так:
PHP:
$arr=array(
0=>1,
'Ы'=>2
);
foreach($arr as $key=>$value){
if(is_int($key))
    unset($arr[$key]);
}
 
Результат из БД.А может из временного массива.
 
Результат из БД.А может из временного массива.
то есть вы сами не знаете откуда у вас ьерется массив?
вот, он просто откуда-то взялся)
код, который я написал, вам подходит?
 
Да,код помог,спасибо.Там опечатка - лишний восклицательный знак.Только вот не пойму почему он не срабатывает для массива указанного ниже.

Array
(
[0] => Array
(
[0] => [731] Lamborghini Diablo2
[1] => 190000
[2] => 1
[3] => 0
[4] => 0
[5] => 60
[name] => Lamborghini Diablo2
[Price] => UAH 190000.00
[Quantity] => 1
[tax] => 0
[load_counter] => 0
[itemID] => 60
[PriceToShow] => UAH 190000.00
[product_code] => 731
)

)

В результате массив обнуляется.
Array
(
)

Добавлено через 1 минуту
Присмотрелся - понял.Там массив массивов.Как тогда очистиь индекы подмассива?
 
PHP:
$arr=array( 
0=>1, 
'Ы'=>2,
'W'=>array(
	1=>2,
	'SS'=>3)
);
var_dump($arr);
clean_num($arr);
var_dump($arr);
function clean_num(&$arr)
	{
	foreach($arr as $key=>$value)
		{ 
		if(is_int($key))
			unset($arr[$key]);
		elseif(is_array($value))
			clean_num($arr[$key]);
		} 
	}
 
Да єтот скрипт работает циклически но он же и чистит первый (цифровой) узел массива вместе со всем его содержимым.

Добавлено через 7 минут
Подскажите как обратится к подмассиву в первом примере
 
тогда так.это если у вас нумерованный(ни одного строкового ключа) масив, подмасивы которого надо чистить
PHP:
$arr=array(0=>array('Ы'=>1,0=>1),1=>array('Ы'=>1,0=>1));
for($i=0,$s=count($arr);$i<$s;$i++){
foreach($arr[$i] as $key=>$value){ 
if(is_int($key)) 
    unset($arr[$i][$key]); 
} 
}
PS а предыдущий работает не циклически, а рекурсивно
 
Спасибо.Мне не зватает синтаксического опыта.
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху