php将多维数组内爆为制表符分隔行

发布于 2024-10-21 08:49:18 字数 188 浏览 1 评论 0原文

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

我尝试使用 array_map() 函数但没有成功,需要帮助才能完成此任务。请帮忙!

I have a multidimensional array $BlockData[]which has 13 dimensions in it and 'n' number of array elements. I need to implode this array back to a single long string where the elements are separated by "\n" line feeds and the dimensions are separated by "\t" tabs.

I've tried using the array_map() function with no success and need help accomplishing this. Please help!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

粉红×色少女 2024-10-28 08:49:18

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

<?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";
?>

This can be done using a recursive function

<?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";
?>
奶气 2024-10-28 08:49:18

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

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

或者,如果您使用 PHP < 5.3(5.2、5.1、5.0 等)

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

Here's an option that I suggested yesterday in chat:

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

Or, if you're using PHP < 5.3 (5.2, 5.1, 5.0, etc)

$callback = create_function('$value', 'return implode("\t", $value);');
echo implode("\n", array_map($callback, $BlockData));
迷乱花海 2024-10-28 08:49:18
 $lines = array();
 foreach($BlockData as $data) {
      $lines[] = implode("\t", $data);
 }

 echo implode("\n", $lines);

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

 $lines = array();
 foreach($BlockData as $data) {
      $lines[] = implode("\t", $data);
 }

 echo implode("\n", $lines);

I would like to give credit to @Alex for recommending this, then deleting his post. This solution worked for me.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文