0

文字列をこのようなネストされた配列に分割する必要があります。実際のデータの小さなサブセット

  • aaa100固定サイズはありません。コードはbbbbbbbb100
  • 分割する固定文字なし

同様の問題は、ファイルパスを配列に変換することですが/、分割するようなものはありません。

使用事例:

数千の製品を含む製品の輸入。各製品コードは、次のようなもので構成されています。

xxx product type
yyy size
zzz colour

xxxxxxxxyyxxxxzzまたはのようなコードがありますxxxxyyzz

AAA100B // product type AAA with size 100 and colour blue
AAA200B // product type AAA with size 200 and colour blue
AAA100G // product type AAA with size 100 and colour green
BBB100B // product type BBB with size 100 and colour blue

色がないものもあれば、サイズがないものもあります。「一致」がなく、単独のコードである可能性があります。

編集

最後の文字 (または 2 つ) は通常、色です。色は次のいずれかです。(カラーコードは文字列の末尾以外にはありません)

BK, GY
B, G, O, P, R, S

00-00数値が長さ/幅の形式である場合、数値はサイズであると見なされます。それ以外の場合は、単一のサイズです00

編集

問題の大まかな開始、事実上そこにあります(展開とマージはフレームワークの一部であるため、そこにハッキングしました)http://codepad.viper-7.com/Wp19g2

4

1 に答える 1

0

うーん、明らかな (まだやや非効率的な) 方法は、コード文字列を取得し、数字に到達するまで文字をループすることだと思います (その時点までのすべての文字を製品タイプとして記録します)。その値とその後のすべての数字を、再び文字に到達し、色の記録を開始するまで繰り返します。もちろん、これは色と製品タイプに数字が含まれていないことを前提としています。

$product_size = ""; $product_type = ""; $product_color = "";
for ($i = 0; $i < strlen ( $code ); $i++ ) {
     if ( !is_numeric ( $code [ $i ] ) ) { 
          if ( $product_size == "" ) $product_type .= $code [ $i ];
          else $product_color .= $code [ $i ]
     } else $product_size .= $code [ $i ];
}

ただし、セパレーターを使用するのは良い設計上の選択です。私のソリューションの問題の 1 つは、製品のサイズがない場合、色が記録されないことです。

于 2012-12-06T23:38:03.147 に答える