Как из масива любой вложености сделать строку из его значений

Name

Новичок
Как из масива любой вложености сделать строку из его значений

subj
 

tony2001

TeaM PHPClub
пройтись по нему рекурсивно и собрать все в строку

subj

P.S. писать вопрос в топике - это модно?
 

sergo

Guest
рекурсия поможет

PHP:
function to_str ($val) {
   $str = '';
   if (is_array ($val)) {
      foreach ($val as $item) {
         $str .= to_str ($item);
      }
   }
   else {
      $str = $val;
   }
   return $str;
}
 

KR

alive in new life
рекурсия должна быть, но мне кажется, что быстрее будет
не тупым перебором, а с применением array_walk

даже при тупом переборе не стоит использовать foreach
 

alpes

Весь мир на ладони
PHP:
function recurs_str($arr, $glue=', ')
{
  foreach($arr as $k=>$v) if(is_array($v)) $arr[$k]=recurs_str($v);
  return(join($glue,$arr));
}

$MyArray=array ('a' => 'apple', 'b' => 'banana', 'c' => array ('x','y','z'));
echo recurs_str($MyArray);
На счет array_walk - не уверен... если что то поправте
 

Дmитpий

Guest
array_link(массив , имя массива для передачи по ссылке [, уже существующая строка к которой надо добавить массив])

Функция перевода массива в строку для передачи его по ссылке.
Функция может работать с вложенными массивами.

PHP:
<?php 
function array_link($arr,$name = "tmp_arr", $arg = "") { 
    if (substr($arg,strlen($arg)-1,1) != "&") {$arg .= "&";} 
    $c=0; 
    while (list($key,$value) = each($arr)) { 
        if (gettype($value) == "array") { 
            $arg .= array_link($value,$name."[".$key."]",$arg); 
        } else { 
            $arg .= $name."[".$key."]=".$value; 
        } 

        $c++; 
        if ($c<count($arr)) { 
            $arg .= "&"; 
        } 
    } 
    return $arg; 
} 
?>
http://code.msk.ru/author/portfolio/php_functions/array_link.php
 

Resonator

Guest
А если так?

PHP:
<?php

function pre_array($arr){
	ob_start();
	print_r($arr);
	$tmp=ob_get_contents();
	ob_end_clean();
	return $tmp;
}

?>
 

RomikChef

Guest
не представляю, какой интерес может поредставлять строка, сляпанная из многомерного массива.
имявасялет15живетПравды, 11работаетпрограммистом

на конкурс, кто короче, представляю свой вприант
echo var_export($arr,1);
 

alpes

Весь мир на ладони
2Resonator
print_r выдаст свалку всего вместе с ключами, емуже надо тока значения
 

Krisha

pain in the neck
Автор оригинала: RomikChef
не представляю, какой интерес может поредставлять строка, сляпанная из многомерного массива.
имявасялет15живетПравды, 11работаетпрограммистом
Очень даже большой интерес, к примеру, когда нужно всё что в массиве передать флешу:

echo "name=вася&age=15&address=Правды,11&occupation=программист";

Хинт: флешу никак низя передать массив
 

KR

alive in new life
2: Resonator
Офтоп.

<?php
function pre_array($arr){
return print_r($arr, true);
}
?>

с тем же результатом.
и не нужен перехват выходного потока
 
Сверху