スレッド表示 | フラット表示〕 全トピック 920 件中 841 番目 次≫ ≪前

ファイル連結について

created: 2003-07-09 23:11 | modified: 2003-07-16 20:18 | reply: 4

[399] ファイル連結について

user: そろり | created: 2003-07-09 23:11
$a = file('xxx.csv');
$b = file('yyy.csv');
のように配列として取得したデータ$a及び$bを簡単に連結させる方法はないでしょうか?

$a = $a + $b;
$a = array_merge($a,$b);
array_push($a,$b);

は、すべてダメですよね?
現状では、すべての要素を順番にpushしてやってる状況です。
reply: 400 返信 編集 削除

[400] Re.ファイル連結について

user: ゆうじ | created: 2003-07-10 01:16
そろりさん、こんばんは。

$a の後ろに $b をくっつけるだけなら
↓これで連結できると思います。

> $a = array_merge($a,$b);


タイトル通り、
2つのファイルを連結するのが目的ならば、

'yyy.csv' を、丸まる読み込んで、
追記モードで開いた 'xxx.csv' に書き出す、
というのはいかがでしょう。
Parent: 399  reply: 402 返信 編集 削除

[402] 具体的にいうと

user: そろり | created: 2003-07-10 05:28
返信ありがとうございます。初心者でよくわからないのですが、このように格納されてるらしく
1 => 1行目
2 => 2行目
そのやり方だと、上書きされてるようで、
count($all)としても合計数にはなってないのです。
複数ファイルから必要なデータを抽出するよなプログラムにしたいのです。
だいたい1万要素くらいを$allに入れたい感じです。
array_push($all,$a)で$all[ファイル数][データ数]のような感じや、
foreach($a as $data => $value){
array_push($all,$value);
}
のように各要素を順番に$allにいれて、$all[データ数]になる方法をファイル数分繰り返すくらいしか思い浮かびません。

一時的に要素を連結したい、また、複数ファイルすべてではない場合もあり、複数の人間がほぼ同時にアクセスすることもあるので書き出す方法は避けたいかなと思いまして。。
Parent: 400  reply: 408 返信 編集 削除

[408] array_merge( )を検証

user: ゆうじ | created: 2003-07-16 11:52
array_merge( )では、
配列の添え字が数字ならば、
上書きされることはないと思いましたので、
ちょっと検証してみました。

▼array.php ---------------------
<?php

$a = file('a.csv');
$b = file('b.csv');
$all = array_merge($a, $b);

var_dump($all);

?>

▼a.csv ---------------------
aaa,bbb,ccc,ddd
eee,fff,ggg,hhh
iii,jjj,kkk,lll

▼b.csv ---------------------
mmm,nnn,ooo
aaa,bbb,ccc,ddd
sss,ttt,uuu

▼array.php 実行結果 -------------
array(6)
{
 [0]=> string(17) "aaa,bbb,ccc,ddd "
 [1]=> string(17) "eee,fff,ggg,hhh "
 [2]=> string(15) "iii,jjj,kkk,lll"
 [3]=> string(13) "mmm,nnn,ooo "
 [4]=> string(17) "aaa,bbb,ccc,ddd "
 [5]=> string(11) "sss,ttt,uuu"
}

このような結果が得られれましたが、OK?
上書きされてしまうソースと大きく異なるところはありますか。
Parent: 402  reply: 409 返信 編集 削除

[409] ありがとうございます(^^)

user: そろり | created: 2003-07-16 20:18
返信ありがとうございます。
指摘していただいた方法でも問題ありませんでした。前回と同じ状況でデータ数減らしただけなんですけどね。しかし、データが1万を超えるとエラーになるみたいです。PHPのエラーメッセージもでず、レンタルサーバー専用のエラーもでず、普通のエラーになるんです。そのへんが、よくわからないんですが、サーバーの設定のせいでしょうか・・。

ただ、実行速度を検証したところ、一個一個データをプッシュしてあげるほうが早かったので、そちらにしました。
今回は、ありがとうございました(^^)
Parent: 408  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 841 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑