2016-04-02 8 views
0

配列が〜10000の値を持っています。配列を配列の配列に分解する

例:

$arr = array("Name", "1.00", "87.70", "12.30",  
    "3.30", "3.30", "0.00", "3.50", "2.10", "1.11", "0.10", "14.00", 
    "4.80", "0.00", "4.80", "0.00", "0.70", "44.00", "12.00", "85.00", 
    "138.00", "118.00", "0.10", "0.32", "1.00", "9.00", "40.00", "0.05", 
    "0.11", "0.04", "0.17", "0.10", "0.70", "5.00", "0.05", "0.40", 
    "1.00", "0.00", "65.00", "^_^", "Name2", "1.00", 
    "88.00", "12.00", "3.30", "3.30", "0.00", "3.20", "1.92", "1.01", 
    "0.08", "13.00", "4.80", "0.00", "4.80", "0.00", "0.70", "44.00", 
    "12.00", "85.00", "139.00", "118.00", "0.10", "0.32", "1.00", "9.00", 
    "36.00", "0.00", "0.10", "0.04", "0.17", "0.10", "0.70", "7.00", 
    "0.05", "0.40", "1.00", "0.00", "61.00", "^_^", 

など....それは "^ _ ^" 配列の値に到達し、配列内の配列を作るとき、私は、配列を爆発する必要が

。それから私はデータベースに情報を入れます。

私は爆発しようとしましたが、foreachと爆発しましたが、この問題の解決策は見つかりませんでした。

+1

読むあなたがしようとしているものを私たちに示しています。この入力から期待される出力が何であるか教えてください。 –

+0

出力は$ arr [0] [1] = "Name"、$ arr [0] [2] = "1.0"、$ arr [1] [1] = "Name2"などとなります。爆発でこれを行うことはできません、それは文字列を期待してエラーを取得したためです。 foreachと爆発で私が望む方法で動作しません。だから私は解決策を探してどのように私はこの問題を解決することができます。 –

+1

[implode](http://php.net/manual/en/function.implode.php)それは最初ですか? – Chay22

答えて

1

これを行うには、独自の関数を記述する必要があります。ここではそれを説明する必要があります簡単な例です:

function array_split($arr, $splitBy) { 
    $result = []; 
    $subArray = []; 

    foreach ($arr as $elem) { 
     // If an element matches your delimiter, 
     // add the current sub-array to the result set and start a new sub-array 
     // Else add the element to the sub-array 
     if ($elem == $splitBy) { 
      $result[] = $subArray; 
      $subArray = []; 
     } else { 
      $subArray[] = $elem; 
     } 
    } 

    // Make sure the last sub-array also gets added to the result set 
    $result[] = $subArray; 

    return $result; 
} 
1
$result = array_map 
(
    function($row) 
    { 
     return explode(',', $row); 
    }, 
    explode(',^_^,', implode(',',$arr)) 
); 

print_r($result); 

出力:元の配列の最後の要素が^_^でない場合

Array 
(
    [0] => Array 
     (
      [0] => Name 
      [1] => 1.00 
      (...) 
     ) 
    [1] => Array 
     (
      [0] => Name2 
      [1] => 1.00 
      (...) 
     ) 
    (...) 
) 

コード意志の上で動作します。そうしないと、このようにスクリプトを変更する必要があります。

explode(',^_^,', implode(',', array_slice($arr, 0, -1))) 
#        ↑↑↑↑↑↑↑↑↑↑↑↑  ↑↑↑↑↑↑↑↑↑ 

あなたはarray_mapに「^ _ ^」「」で元の配列を内破によって、結果の文字列を爆発によって得られた配列を渡す、その後、array_map戻り、各'、'によって展開された文字列。


関連する問題