Преобразование массива в хеш

MARLENUS

Guest
Преобразование массива в хеш

На перле такое делается очень легко:

%hash = @array;
или
$hash = { @array };

а как такое проделать в 1 строку на php?

собственно у меня есть строка данных разделенных символом табуляции и мне нужно получить из нее массив
это легко:
explode( "\t", 'el0 el1 el3 el4' )

но если требуется так же получить хеш то я в тупике
строка данных в данном случае выглядит так:
'key0 val0 key1 val1'

хотелось бы получить:
$hash = ( key0 => val0, key1 => val1 )

Подскажите, пожалуйста
 

Demiurg

Guest
в чем проблема сделать все самому ? есть такой оператор, как for.
 

Screjet

Новичок
PHP:
$a = explode( "\t", 'el0 el1 el3 el4' );
foreach( $a as $i=>$val ){
  if ( $i % 2 ){
    $new[$key] = $val;
  } else {
    $key = $val;
  }
}
print_r($a);
 

MARLENUS

Guest
Автор оригинала: Screjet
PHP:
$a = explode( "\t", 'el0 el1 el3 el4' );
foreach( $a as $i=>$val ){
  if ( $i % 2 ){
    $new[$key] = $val;
  } else {
    $key = $val;
  }
}
print_r($a);
да жаль нет функции в одну строку ((

есть функция делать хеш из 2-х массивов (ключи и значения)
array_combine ( array keys, array values )

есть разбивать массив на части
array_chunk ( array input, integer size [, bool preserve_keys] )

а той что нужно нет (
 

Demiurg

Guest
есть функция в одну строчку
$a = explode( "\t", 'el0 el1 el3 el4' ); foreach( $a as $i=>$val ) if ( $i % 2 ) $new[$key] = $val; else $key = $val;
 

MARLENUS

Guest
Я сделал немного по другом -)
$a = explode( "\t", 'el0 el1 el3 el4' );
while ( current($a) ) { $new[current($a)] = next($a); next($a); }
 

Demiurg

Guest
MARLENUS
видишь, как все просто ?
можно легко обойтись без пионеров, типа Screjetа.
Твое решение, кстати приятнее, только проверь его в случае, когда количество элементов нечетное.
 

MARLENUS

Guest
Demiurg
приятнее :) я ведь 2 дня над ним думал
но хотел еще узнать что другие люди скажут
с тех пор как я сел за php узнал что многие функции что я собираюсь писать оказывается уже встроены

нечетность меня не волнует, но думаю там будет NULL в value
но хотя не знаю как в php, а в перле бы был undef
 

Demiurg

Guest
>я ведь 2 дня над ним думал
лучше день потерять, потом за два часа долететь (с) ноги, крылья, хвост

>но думаю там будет NULL в value
это легко проверить.
 
Сверху