2016-10-29 3 views
3

連想配列を作成します。私は連想配列を作成しようとしています スプリット配列が、私はこのようになります配列を持っている

$array[0] = "a 12 34" 
$array[1] = "b 12345" 
$array[2] = "c 123456" 

よう

a 12 34 
b 12345 
c 123456 

だから、配列が見えるように

[a] => 12 34 
[b] => 12345 
[c] => 123456 

"a、b、c"を含むものと内容のものを別々に2つに分割できますか? e array_combine()?それとも他の方法がありますか?

答えて

0

を与えるだろう。 Quick-Test here:

 $array  = array("a 12 34", "b 12345", "c 123456"); 
     $array2  = array(); 

     foreach($array as $data){ 
      preg_match("#([a-z])(\s)(.*)#i", $data, $matches); 
      list(, $key, $space, $value) = $matches; 
      $array2[$key] = $value; 
     } 

     var_dump($array2); 
     // YIELDS:: 
     array(3) { 
      ["a"]=> string(5) "12 34" 
      ["b"]=> string(5) "12345" 
      ["c"]=> string(6) "123456" 
     } 

それともあなたはarray_maparray_columnarray_combineの組み合わせを使用することができQuick-Tested Here.

 <?php 

      $array  = array("a 12 34", "b 12345", "c 123456"); 
      $keys  = array(); 

      array_walk($array, function(&$data, $key) use (&$keys){ 
       $keys[] = trim(preg_replace('#(\s.*)#i', '', $data));; 
       $data = trim(preg_replace('#(^[a-z])#i', '', $data)); 
      }); 

      $array = array_combine($keys, $array); 

      var_dump($array);; 
      // YIELDS:: 
      array(3) { 
       ["a"]=> string(5) "12 34" 
       ["b"]=> string(5) "12345" 
       ["c"]=> string(6) "123456" 
      } 
0

これは何の問題もありません:)簡単なループが可能です。

  1. 各データ(explode(' ', $row, 2)strstrsubstr、...)スプリット
  2. 各行に
  3. Loppを新しい配列を作成しますか?あなたの新しい配列$array[$key] = $value;
0

$newArr

  • 入れデータは、あなたが以下のスニペットのようなループ内で示すことが行うことができ、あなたの予想結果

    $array = array(); 
    $array[0] = "a 12 34"; 
    $array[1] = "b 12345"; 
    $array[2] = "c 123456"; 
    
    $newArr = array(); 
    
    foreach($array as $val) { 
        $values = explode(' ', $val, 2); 
        $newArr[$values[0]] = $values[1]; 
    } 
    
    print_r($newArr, true); 
    
  • 0

    することができarray_walk()array_combine()のブレンドを使用して:

    $array = array_map(function ($v) { return explode(' ', $v, 2); }, $array); 
    $array = array_combine(array_column($array, 0), array_column($array, 1)); 
    
    関連する問題