2017-03-21 7 views
0

このコードは別の投稿にあります。次のコードでインライン化すると、データベースから文字列を取り出し、2次元配列に展開し、配列の値を編集し、同じ形式で格納できる状態に戻す必要があります。つまり、既存のスクリプトと同じ順序で後方に移動します。PHPが爆発し、それを多次元配列MKIIに割り当てます:)

あなたのいずれかのウィザードが私を助けてくれますか? :) ありがとうございました!

他のポストからコード>>

$data = "i love funny movies \n i love stackoverflow dot com \n i like rock song"; 
$data = explode(" \n ", $data); 

$out = array(); 
$step = 0; 
$last = count($data); 
$last--; 

foreach($data as $key=>$item){ 

    foreach(explode(' ',$item) as $value){ 
    $out[$key][$step++] = $value; 
    } 

    if ($key!=$last){ 
    $out[$key][$step++] = ' '; // not inserting last "space" 
    } 

} 

print '<pre>'; 
print_r($out); 
print '</pre>'; 
+0

だから何を試しましたか?また、なぜ* $ out *配列に断続的に単一のスペースを格納したいのですか?それはどのように役立つのですか? – trincot

+1

あなたが望む最終結果は何ですか?私は面白い映画を愛しています。\ n私はstackoverflowドットコムを愛しています\ n私はロックソングが好きです? – AbraCadaver

+0

最後のスペースを挿入するには、$ last--をコメントアウト/削除する必要があります。 –

答えて

0

引用符号は単に値としてスペースが別の配列要素を挿入します。それらがもたらすどんな利益を疑問に思うことができます。

function explode2D($row_delim, $col_delim, $str) { 
    return array_map(function ($line) use ($col_delim) { 
     return explode($col_delim, $line); 
    }, explode($row_delim, $str)); 
} 

function implode2D($row_delim, $col_delim, $arr) { 
    return implode($row_delim, 
     array_map(function ($row) use ($col_delim) { 
      return implode($col_delim, $row); 
     }, $arr)); 
} 

彼らが互いの逆であり、かつ標準を使用すると、2つの区切り文字を指定する必要があることを除いて、機能を爆発のように多くの作業:1ここで

は、あなたが使用できる二つの機能です行を区切るために、そして列のために別のものを使用します。

$data = "i love funny movies \n i love stackoverflow dot com \n i like rock song"; 

$arr = explode2D(" \n ", " ", $data); 

// manipulate data 
// ... 
$arr[0][2] = "scary"; 
$arr[2][2] = "balad"; 

// convert back 

$str = implode2D(" \n ", " ", $arr); 

はそれがrepl.it上で実行を参照してください:ここで

は、あなたがそれを使用する方法です。

+0

この男は専門家です。珍しいデリミタ、つまり、¶や¶をmysqlデータベースに格納する方法を尋ねることができますか? –

+0

mysqlデータベースのすべての種類の文字を許可するには、[このQ&A](http://stackoverflow.com/q/279170/5459839)を参照してください。 – trincot

+0

本当にありがとう –