array_flip для многомерного массива

Name

Новичок
array_flip для многомерного массива

Что неправильно в этой функции
PHP:
function multiArrayFlip($arr) {

	foreach($arr as $k => $v) {
		if(is_array($v)) {
			$arr[$k] = multiArrayFlip($v); 
		} else {
			$arr = array_flip($arr);
			break;
		}
	}
	return $arr;  
}
для такого массива работает

$array[1]['sadasd'] = '11';
$array[1]['asda'] = '12';
$array[2][3]['ww'] = '121';
$array[2][3]['rrr'] = '122';


Для токого не хочет, ниче не пойму.

$array[1]['sadasd'] = '11';
$array[1]['asda'] = '12';
$array[2][3]['ww'] = '121';
$array[2][3]['rrr'] = '122';

$array[5] = '11';
$array[6] = '12';
$array[7] = '13';
$array[8] = '14';
 

SiMM

Новичок
Re: array_flip для многомерного массива

Автор оригинала: Name
Что неправильно в этой функции
ДНК? ;)
PHP:
function multiArrayFlip($arr){
  foreach ($arr as $k => $v){
    if (is_array($v))
      $arr[$k] = multiArrayFlip($v);
    else
      if ($k!=$v){       // без этой проверки можно потерять элемент массива, если индекс=значению
        $arr[$v]=$k;     // 'ручное' создание нового элемента
        unset($arr[$k]); // 'ручное' удаление старого
      }
  }
  return $arr;
}
А теперь вопрос - а зачем? Просто не вижу практического применения задаче.
 

Name

Новичок
Точно ДНК. :). Спасибо.

> А теперь вопрос - а зачем? Просто не вижу практического применения задаче.
Задачи бывают разные.

-~{}~ 21.05.04 02:21:

Не знаешь как многомерный массив преобразовать в одномерный.
Что то попробовал кривовато все как то.
 

SiMM

Новичок
Автор оригинала: Name
> А теперь вопрос - а зачем? Просто не вижу практического применения задаче.
Задачи бывают разные.
Просто интересно было, где это может понадобиться (любопытство :) ).
Не знаешь как многомерный массив преобразовать в одномерный.
Опиши поподробней и с примерами - так не понятно, во что у тебя должен превратиться многомерник.
 

Name

Новичок
PHP:
FROM:
Array
(
    [a] => Array
        (
            [a] => a
            [b] => b
            [c] => c
        )

    [b] => Array
        (
            [d] => d
            [e] => e
            [f] => f
        )

)

TO:
Array
(
    [a] => a
    [b] => b
    [c] => c
    [d] => d
    [e] => e
    [f] => f
)
 

SiMM

Новичок
Name, а в чём проблема? Так же, рекурсией, только наверно для данного случая в рекурсии имеет смысл использовать глобальный массив для результата.
 
Сверху