【问题标题】:convert 2d array to a string using php使用php将二维数组转换为字符串
【发布时间】:2012-01-06 12:26:01
【问题描述】:

我有以下数组

 01 03 02 15
 05 04 06 10
 07 09 08 11
 12 14 13 16

我想转换如下字符串:

 01,05,07,12|03,04,09,14|02,06,08,13|15,10,11,16

谁能告诉我怎么做,任何帮助将不胜感激!

【问题讨论】:

  • 这个像数组吗([0]数组([0] 01 [1] 03 [2] 02 [3] 15))??
  • 然而,这里的所有答案(包括接受的答案)都没有真正给出 OP 要求的实际输出......除了 Rudolph Gottesheim 的答案。

标签: php


【解决方案1】:

我假设你有这个数组:

$array = array (
  array ('01','03','02','15'),
  array ('05','04','06','10'),
  array ('07','09','08','11'),
  array ('12','14','13','16')
);

在这种情况下,您可以这样做:

$tmpArr = array();
foreach ($array as $sub) {
  $tmpArr[] = implode(',', $sub);
}
$result = implode('|', $tmpArr);
echo $result;

See it working

【讨论】:

  • 比我的短一行所以+1
  • 你在几秒钟内就超过了我,+1。 :)
【解决方案2】:
$input = array(
    array('01', '02', '03', '04'),
    array('11', '12', '13', '14'),
    array('21', '22', '23', '24'),
    array('31', '32', '33', '34'),
);
$newArray = array();
foreach($input as $rowIndex => $row) {
    foreach($row as $key => $val) {
        if(!$newArray[$key]) {
            $newArray[$key] = array();
        }
        $newArray[$key][$rowIndex] = $val;
    }
}
$strRows = array();
foreach($newArray as $key => $row) {
    $strRows[$key] = join(',', $row);
}
$output = join('|', $strRows);

【讨论】:

  • +1 - 迄今为止唯一实际给出 OP 请求的输出的解决方案....所有其他解决方案都需要先转置数组。
【解决方案3】:
$input = array (
    array ('01','03','02','15'),
    array ('05','04','06','10'),
    array ('07','09','08','11'),
    array ('12','14','13','16'),
);

echo implode('|', array_map('implode', $input, array_fill(0, count($input), ',')));

【讨论】:

  • 整洁....我一直在寻找一个带有闭包的 array_reduce() 解决方案,但这更干净。
【解决方案4】:

假设您的数组为 $myArray,如下所示:

$newArray = array();
foreach ($myArray as $row) {
    $rowValue = implode(',', $row);
    $newArray[] = $rowValue;
}
$finalString = implode('|', $newArray);

【讨论】:

    【解决方案5】:

    查看目前提出的解决方案,只有一个实际生成了 OP 请求的正确输出。

    所以,毫不掩饰地从salathe 的简洁转换中窃取,但通过转置来提供正确的结果:

    $input = array ( 
        array ('01','03','02','15'), 
        array ('05','04','06','10'), 
        array ('07','09','08','11'), 
        array ('12','14','13','16'), 
    ); 
    
    function transpose($array) {
        array_unshift($array, null);
        return call_user_func_array('array_map', $array);
    }
    
    $transposed = transpose($input);
    
    echo implode('|', array_map('implode', $transposed, array_fill(0, count($transposed), ','))); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-27
      • 2019-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-28
      • 1970-01-01
      相关资源
      最近更新 更多