【问题标题】:php implode multidimensional array to tab dilimited linesphp 内爆多维数组以制表符分隔线
【发布时间】:2011-03-10 13:00:54
【问题描述】:

我有一个多维数组$BlockData[],其中有 13 个维度和“n”个数组元素。我需要将此数组内爆回单个长字符串,其中元素由"\n" 换行符分隔,尺寸由"\t" 制表符分隔。

我尝试使用 array_map() 函数但没有成功,需要帮助来完成此操作。请帮忙!

【问题讨论】:

标签: php multidimensional-array tabs newline implode


【解决方案1】:

这可以使用递归函数来完成

<?php

function r_implode( $pieces )
{
  foreach( $pieces as $r_pieces )
  {
    if( is_array( $r_pieces ) )
    {
      $retVal[] = "\t". r_implode( $r_pieces );
    }
    else
    {
      $retVal[] = $r_pieces;
    }
  }
  return implode("\n", $retVal );
}

$test_arr = array( 0, 1, array( 'a', 'b' ), array( array( 'x', 'y'), 'z' ) );
echo r_implode( $test_arr ) . "\n";
$test_arr = array( 0 );
echo r_implode( $test_arr ) . "\n";
?>

【讨论】:

    【解决方案2】:

    这是我昨天在聊天中建议的一个选项:

    $callback = function($value) { 
        return implode("\t", $value); 
    };
    echo implode("\n", array_map($callback, $BlockData));
    

    或者,如果您使用的是 PHP

    $callback = create_function('$value', 'return implode("\t", $value);');
    echo implode("\n", array_map($callback, $BlockData));
    

    【讨论】:

      【解决方案3】:
       $lines = array();
       foreach($BlockData as $data) {
            $lines[] = implode("\t", $data);
       }
      
       echo implode("\n", $lines);
      

      我想感谢@Alex 推荐了这篇文章,然后删除了他的帖子。这个解决方案对我有用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-12
        • 2022-01-01
        • 2011-07-12
        • 2023-03-16
        • 1970-01-01
        • 2012-08-03
        • 2017-01-14
        • 1970-01-01
        相关资源
        最近更新 更多