2

文字列データがあります

$data="100,200,300,400|500,600,700,800|900,100,200,300|400,500,600,700|800,900,100,200|300,400,500,600|700,800,900,100";

そして私はこのような結果を得たい

a   |b   |c   |d   |
100 |200 |300 |400 |
500 |600 |700 |800 |
900 |100 |200 |300 |
.   |.   |.   |.   |
etc |etc |etc |etc |

そのような結果を得るために私がしなければならないこと

私はプログラミングが初めてで、多次元配列について知りませんでした

私が知っているすべて私はこの文字列を2回爆発させます

$data = explode(';',$data);
foreach($data as &$d)
    $d=explode(':',$d);
4

5 に答える 5

4

この方法で試してください

<?php
$data="100,200,300,400|500,600,700,800|900,100,200,300|400,500,600,700|800,900,100,200|300,400,500,600|700,800,900,100";
$data = explode('|',$data);
foreach($data as $d){
   $newdata_arr = explode(',',$d);
      foreach($newdata_arr as $newdata)
      echo $newdata."|";

   echo "\r\n";
}
?>

デモ

于 2012-11-05T06:48:37.310 に答える
2

str_padの2番目の引数を変更して、行の各要素のパディングの量を変更できます。

<?php
$data="100,200,300,400|500,600,700,800|900,100,200,300|400,500,600,700|800,900,100,200|300,400,500,600|700,800,900,100";

$rows = explode("|", $data);
$headers = "a,b,c,d";
array_unshift($rows, $headers);

foreach ($rows as $row) {
  $parts = explode(",", $row);
  foreach ($parts as $part) {
    echo str_pad($part, 10) . "|";
  }
  echo "\n";
}

出力

a         |b         |c         |d         |
100       |200       |300       |400       |
500       |600       |700       |800       |
900       |100       |200       |300       |
400       |500       |600       |700       |
800       |900       |100       |200       |
300       |400       |500       |600       |
700       |800       |900       |100       |

さまざまなデータを使用するが、値と列区切り記号の間に常に少なくとも1つのスペースが必要な場合は、次を使用できます。

<?php
$data="100,200,30,400|500,600,70,8000|900,100,200,300|4004532,500,60,700|800,900,100,200|300,400,500,600|700,800,900,100";

function splitvals($str) {
  return explode(",", $str);
}

$multi_data = array_map('splitvals', explode('|', $data));
array_unshift($multi_data, null);
$val_for_sizes = call_user_func_array('array_map', $multi_data);
$sizes = array();
foreach ($val_for_sizes as $vals) {
  $sizes[] = strlen(max($vals));
}


$rows = explode("|", $data);
$headers = "a,b,c,d";
array_unshift($rows, $headers);

foreach ($rows as $row) {
  $parts = explode(",", $row);
  $col = 0;
  foreach ($parts as $part) {
    echo str_pad($part, $sizes[$col++] + 1) . "|";
  }
  echo "\n";
}

出力

a       |b   |c   |d    |
100     |200 |30  |400  |
500     |600 |70  |8000 |
900     |100 |200 |300  |
4004532 |500 |60  |700  |
800     |900 |100 |200  |
300     |400 |500 |600  |
700     |800 |900 |100  |
于 2012-11-05T06:51:38.067 に答える
1
$data = explode('|',$data);
$arr = array();
foreach($data as &$d)
    $arr[] = explode(',',$d);


<pre>
<?php print_r ($arr); ?>
</pre>
于 2012-11-05T06:46:46.227 に答える
0

これを試して

$data="100,200,300,400|500,600,700,800|900,100,200,300|400,500,600,700|800,900,100,200|300,400,500,600|700,800,900,100";
$dt = $data = explode('|',$data);
echo 'a | b | c | d';
echo '<br/>';
foreach($dt as $key => $val){
  echo str_replace(',', ' | ',$val);
  echo '<br/>';
 }
于 2012-11-05T06:51:16.193 に答える
-2
<pre>
<?php print_r ($array); ?>
</pre>
于 2012-11-05T06:44:44.503 に答える