MYSQLデータベースにインポートするCSVファイルがあります。問題は、各行のフィールド数が異なることです。そしてそれらの配置はかなりランダムです。
ただし、カテゴリ(テキスト、画像など)に分類できます。
現在の形式では、データベースに直接インポートするには不規則すぎるため、PHPを使用して再フォーマットするのに疲れました。
簡略化した例:
$messy = array(
[0] => array("text1","text2" ),
[1] => array("img1.jpg" ),
[2] => array("text1","img1.jpg","img2.jpg"),
[3] => array("img1.jpg","text1","text2"),
...
[1000] => array("text2","img1.jpg","img2.jpg","text1")
);
新しい配列を次のパターンに一致させたい
array(
[0] =>array(TEXT,TEXT,IMG,IMG),
[1] =>array(TEXT,TEXT,IMG,IMG),
十分なデータがない場合、残りの値は=0です。
[0] =>array("text1","text2",0,0),
[1] =>array(0,0,"img1.jpg",0),
私は新しい配列を作成し、「テキスト」ファイルを次のように先頭に移動しようとしました。
$ordered=array();
$i=0;
foreach($messy as $row){
foreach($row as $item){
if (strlen(strstr($item,"text"))>0) {
if(($key = array_search($item, $row)) !== false){
unset($row[$key]);
}
array_unshift($row,$item);
}
}
$ordered[$i++]=$row;
}
ただし、再フォーマットはせず、並べ替えるだけです。