2011-01-24 18 views
1

私は配列は、このようなデータが含まれてしまった私の操作で:既存の配列を新しい配列に変換しますか?

$A = Array 
    (
     [0] => 0302 sa 
      [1] => 0602 sdsa 
      [2] => 0602 sada 
      [3] => 0802 sadasdasd 
     [4] => 0302 sada 
      [5] => 0602 saa 
      [6] => 0602 sdad 
      [7] => 0802 sds 
     [8] => 0302 sda 
      [9] => 0602 sdada 
      [10] => 0602 sada 
      [11] => 0802 sdada 
     [12] => 0302 sda 
      [13] => 0602 sdads 
      [14] => 0602 saddas 
      [15] => 0802 sadas 
    ) 

出力は新しい配列

$B = Array 
     (//03 
     [0] => array( 
        [0] => 0602 sdsa,//06 
        [1] => 0602 sada //06 
     ) 
     //03 
     [1] => array(
       [0] => 0602 saa,//06 
       [1] => 0602 sdad //06 
       ) 
       //03 
     [2] => array(
       [0] => 0602 sdada,//06 
       [1] => 0602 sada //06 
     ) 
      //03 
     [3] =>array(
       [0] => 0602 sdads,//06 
       [1] => 0602 saddas//06 
     ) 
    ) 

私はこの問題を解決するのを助けることができる
function TODO($A){ 
    $B = array(); 
    foreach ($A as $key=>$line){ 
if(substr($line,0,2)=="03"){ 
    $B[] = ??? 
    } 
} 

を試してみてくださいになります?

+0

したがって、項目の値が "03 ..."であればいつでも新しいサブアレイを作成しますか? – Sampson

+0

はい、03はメイン配列になり、06は03の要素になります – kn3l

+0

ここではデータ操作のロジックは何ですか? x = xxxならばx2 = xxx2ならばyに代入し、y2に代入すれば...教えてもらえますか? – Andreyco

答えて

1
 
$B = array(); 
foreach($a as $line) { 
    if(substr($line,0,2)=="03"){ 
    if(isset($tmpArray)) $B[] = $tmpArray; 
    $tmpArray = array(); 
    } else { 
    if(!isset($tmpArray) continue; 
    $tmpArray[] = $line; 
    } 
} 
if(isset($tmpArray)) $B[] = $tmpArray; 

だけのシンプルなアイデア

+0

これは値 '0802'の行も追加します。 – codaddict

2

てみてください:-):

$B = array(); 
$flag = 0; 
foreach ($A as $key=>$line){ 
     if($flag != 0) { 
       if($flag == 1) { 
         $temp = array(); 
         $temp[0] = $line; 
         $flag++; 
       } else { 
         $temp[1] = $line; 
         $B[] = $temp; 
         $flag = 0; 
       } 
     } 
     if(substr($line,0,2)=="03"){ 
       $flag = 1; 
     } 
} 

Ideone Link

注:私はすぐに03に続く2 06年代を想定しています。

+0

15 => '0602 Added1'、 16 => '0602 Added2'問題があります。http://www.ideone.com/homdIで、要素が追加されました。 – kn3l

+0

@python:あなたの意図はあまり明確ではありません。あなたは '06'の後にすべての' 06'(いくつ関係なく)を追加しますか? – codaddict

+0

どこにもありがとうございます。 – kn3l

関連する問題