2

以下のような .txt ファイルがあります。

Test = 10849831 = August 6, 2013:
56cake = 0 = August 6, 2013:
Wwe = 812986192 = August 6, 2013:

上記のファイルを分解して、以下のような配列を作成します。

Array
(
[Test] => Array
  (
  [0] => 10849831
  [1] => August 6, 2013
  )
[56cake] => Array
  (
  [0] => 0
  [1] => August 6, 2013
  )
[Wwe] => Array
  (
  [0] => 812986192
  [1] => August 6, 2013
  )
)

どうすればこれを達成できますか? 私はすでに次のようなものを使用してみましexplode(":", $data)たが、それを使用して上記のことを行う方法がわかりません。私はPHPにかなり慣れていません。

4

5 に答える 5

2

explodearray_maptrimissetおよびを使用して、配列を少し反復するだけでうまくいきますforeach

PHP の例

$txt = <<<DOC
Test = 10849831 = August 6, 2013:
56cake = 0 = August 6, 2013:
Wwe = 812986192 = August 6, 2013:
DOC;

$Output = array();
$Lines = explode(":", $txt);

foreach($Lines as $line) {
    $Rows = array_map('trim', explode(" = ", $line));
    if(!isset($Rows[0], $Rows[1], $Rows[2])) continue;
    $Output[$Rows[0]] = array($Rows[1], $Rows[2]);
}

print_r($Output);

PHP コード出力

Array
(
    [Test] => Array
        (
            [0] => 10849831
            [1] => August 6, 2013
        )

    [56cake] => Array
        (
            [0] => 0
            [1] => August 6, 2013
        )

    [Wwe] => Array
        (
            [0] => 812986192
            [1] => August 6, 2013
        )

)

コードの説明

  1. 行を分割するexplode(":", $txt)
  2. 各行をループし、=再度使用して各セクションを分割しますexplode
  3. array_map各値を循環させ、空白を削除するために使用します
  4. で 3 つの値があることを確認しisset、そうでない場合は反復をスキップします
  5. 収集した値を出力配列にプッシュします
于 2013-08-13T20:16:31.607 に答える
0

このコードを再利用してみてください:

<?php
echo '<pre>';
$result = array();

$string = 'Test = 10849831 = August 6, 2013';
$temp1 = explode("=", $string, 2);
print_r($temp1);
/*
Array
(
    [0] => Test 
    [1] =>  10849831 = August 6, 2013
)
*/
$key = $temp1[0];

$result[$key] = explode("=", $temp1[1]);

print_r($result);
/*
Array
(
    [Test ] => Array
        (
            [0] =>  10849831 
            [1] =>  August 6, 2013
        )

)
*/
?>
于 2013-08-13T20:16:10.973 に答える
0
$chunks = explode(':', $text);
$out = array();
foreach ($chunks as $key => $value){
    $parts = explode('=', $value);
    if (count($parts) == 3){
        $out[trim($parts[0])] = array(trim($parts[1]), trim($parts[2]));
    }
}
print_r($out);
于 2013-08-13T20:16:49.573 に答える
-1

次のように爆発を使用しています。

<?php
//
//Test = 10849831 = August 6, 2013:
//56cake = 0 = August 6, 2013:
//Wwe = 812986192 = August 6, 2013:

function read_data_file( $file ) {
    $file_open = fopen( $file , 'r' );
    $file_data = fread( $file_open , filesize( $file ) );
    fclose( $file_open );

    return $file_data;
}

$result_read = read_data_file('/home/josecarlos/Desktop/test.txt');

$result_explode = explode("\n", $result_read );

$final_result = array();

foreach ($result_explode as $key => $cursor){
    $explode = explode("=",  $cursor );
    if (isset($explode[0]) && $explode[0] != ''){
        $final_result[trim($explode[0])]  =array (trim($explode[1]),trim($explode[2])) ;
    }
}

var_dump($final_result);

結果は次のとおりです。

array(3) {
  'Test' =>
  array(2) {
    [0] =>
    string(8) "10849831"
    [1] =>
    string(15) "August 6, 2013:"
  }
  '56cake' =>
  array(2) {
    [0] =>
    string(1) "0"
    [1] =>
    string(15) "August 6, 2013:"
  }
  'Wwe' =>
  array(2) {
    [0] =>
    string(9) "812986192"
    [1] =>
    string(15) "August 6, 2013:"
  }
}
于 2013-08-13T20:09:30.397 に答える