2017-01-06 7 views
1

[0]から[1000]のキーを持つ配列変数があります。配列のインクリメントを5で分割し、それをPHPの別の配列に割り当てる方法

例:

$data = Array 
(
    [0] => <td>xxxx</td> 
    [1] => <td>xxxx</td> 
    [2] => <td>xxxx</td> 
    [3] => <td>xxxx</td> 
    [4] => <td>1234</td> 
    [5] => <td>1233</td> 
    [6] => <td>1244</td> 
    [7] => <td>3218</td> 
    [8] => <td>xxxx</td> 
    [9] => <td>xxxx</td> 
    [10] => <td>xxxx</td> 
) 

私が欲しいものは、価値の閉じタグなど</tr>で5インクリメント後のHTMLタグ<tr>持つ配列を作ることです。

私はこのコードを試してみましたが、まだ動作していない:

for($i = 0;$i <= 20; $i++) { 
    if($i % 5 == 0){ 
    $x[] = '<tr>' . $data[$i] . '</tr>'; 
    } 
} 

結果はこのようなものです:

$x = Array 
(
    [0] => <tr><td>xxxx</td></tr> 
    [1] => <tr><td>1233</td></tr> 
    [2] => <tr></tr> 
    [3] => <tr></tr> 
    [4] => <tr></tr> 
) 

私がしたいことは、このようなものです:

$x = Array 
    (
     [0] => <tr><td>xxxx</td><td>xxxx</td><td>xxxx</td><td>xxxx</td><td>1234</td></tr> 
     [1] => <tr><td>1233</td><td>1244</td><td>3218</td><td>xxxx</td><td>xxxx</td></tr> 
     [2] => <tr></tr> 
     [3] => <tr></tr> 
     [4] => <tr></tr> 
    ) 

I私は本当に解決策に近いと思うが、今まではまだ混乱している。ヘルプは本当に感謝しています。

答えて

0
$flg=0; 
$x[$flg]="<tr>"; 
for($i = 0;$i <= 20; $i++) { 
$x[$flg].=$data[$i]; 
if($i+1 % 5 == 0){ 
$x[$flg] .= '</tr><tr>'; 
$flg++; 
} 
} 
+0

ソリ、ここでは動作しません。 –

0
$array = ""; 

for($i = 0;$i <= 20; $i++) { 
    $array = $array . $data[$i] ; 
    if($i % 5 == 0){ 
     $x[] = '<tr>' . $array . '</tr>'; 
     $array = ""; 
    } 
} 

が、これは

+0

まだ動作していません、 –

+0

、​​はデータが入っていますので、配列を繰り返す必要はありません、今すぐチェックしてください – manny

1

あなたはarray_chunkを使用することができます試してみて、あなたは</td><td>接着剤を使用したチャンクをimplodeことができます。

また
$chunks = array_chunk($data, 5); 

foreach ($chunks as $chunk) { 
    echo '<tr><td>'; 
    echo implode('</td><td>', $chunk); 
    echo '</td></tr>'; 
} 

、あなたのデータはすでにtdタグが含まれている場合は、空の文字列をグルーとして置くことができます:

代わりに、あなたは結果を変数に格納することができoutputingの
$chunks = array_chunk($data, 5); 

foreach ($chunks as $chunk) { 
    echo '<tr>'; 
    echo implode('', $chunk); 
    echo '</tr>'; 
} 

$chunks = array_chunk($data, 5); 
$x = []; 

foreach ($chunks as $chunk) { 
    $x[] = '<tr>' . implode('', $chunk) . '</tr>'; 
} 

$x = array_merge($x, array_fill(0, 5 - count($chunks), '<tr></tr>')); 

var_dump($x); 
+0

これは結果を出力できますが、 '$ x'には保存できません。 –

+0

それを出力するのではなく、 '$ x'に格納することの一部ですか? –

+0

更新された答えを見てください... –

0

nを(それがOを消費する余分な操作であることを気にしない場合は、array_chunkと補足配列を構築することができます)時間およびO(n)メモリ。

もう1つのアプローチは、一時変数にセルを格納することです。項目数が5で割り切れるなると、例えば、$xに変数の内容を保存し、一時変数をリセットします。

$row = []; 
foreach ($a as $i => $cell) { 
    if ($i && $i % 5 == 0) { 
    $x[] = '<tr>' . implode('', $row) . '</tr>'; 
    $row = []; 
    } 

    $row[] = $cell; 
} 

if ($row) { 
    $x[] = '<tr>' . implode('', $row) . '</tr>'; 
} 

あなたは各行のセルの同じ数をしたい場合は、最後のブロックでarray_padを使用(ループの後)(例:

if (count($row) < 5) { 
    $row = array_pad($row, 5, '<td></td>'); 
} 
+0

ソーリーでなければなりませんが、これは私が望んでいないようです。私はちょうど5キーが5キー( '$ data')の5つの値を持つ' $ x'の1つのキーになりたいと思っています。 –

+0

@PangeranSEO、答えが更新されました –

+0

あなたのコードのおかげで、ありがとう、 –

関連する問題