0 レビュー
4 回答
php配列を3列で表示し、最初の行は1つの要素、2番目と3番目の行は2つの要素
$b = 0;
foreach ($settings['items'] as $item){
$b++;
if ($b==1){
$out .='First';
} else{
$out2 .='Second';
}
}
echo '<div class="inner">'.$out.'</div>';
echo '<div class="inner">'.$out2.'</div>';
どの出力
<div class="inner">First</div>
<div class="inner">Second Second Second Second</div>
しかし、私はこの構造を持ちたいです
<div class="inner">First</div>
<div class="inner">Second Second</div>
<div class="inner">Second Second</div>
私が考えた解決策の1つは、 array_slice
を使用することです。しかし、最初のループでは、2つではなく1つの要素しか必要ないため、それはできないと思います。
わからない
0
レビュー
答え :
解決策:
これを試してください:
$first = true;
$all = [];
$couples = [];
foreach ($settings['items'] as $item){
if($first){
$first = false;
$first_out = 'First'; //or whatever
$all[] = $first_out;
}else{
if(count($couples) == 2){
$all[] = $couples;
$couples = [];
}
$couples[] = 'Second';
}
}
foreach($all as $value){
echo '<div class="inner">'.implode(',', $value).'</div>';
}
わからない
0
レビュー
答え :
解決策:
少し事前にラングリングし、最初のアイテムを削除してから、残りのチャンク配列にマージします。
<?php
$items = array_fill(0, 5, 'foo'); // An array of five 'foo's.
$first = array_shift($items);
$chunked = array_chunk($items, 2);
$chunked = array_merge([[$first]], $chunked);
var_dump($chunked);
foreach($chunked as $chunk)
{
echo '<div class="inner">' . implode(' ', $chunk) . "</div>\n";
}
出力:
array(3) {
[0]=>
array(1) {
[0]=>
string(3) "foo"
}
[1]=>
array(2) {
[0]=>
string(3) "foo"
[1]=>
string(3) "foo"
}
[2]=>
array(2) {
[0]=>
string(3) "foo"
[1]=>
string(3) "foo"
}
}
<div class="inner">foo</div>
<div class="inner">foo foo</div>
<div class="inner">foo foo</div>
わからない
0
レビュー
答え :
解決策:
コードで$settings['items']の値を使用しないため、その配列の長さで作業できます
$count = count($settings['items']);
if ($count--) echo `<div class="inner">First</div>`;
while($count > 1) {
echo '<div class="inner">Second Second</div>';
$count -= 2;
}
if ($count--) echo `<div class="inner">Second</div>`;
わからない
0
レビュー
答え :
解決策:
これを試すことができます
$b = 0;
for($j = 1; $j <= 2; $j++){
$b++;
for($i = 1; $i <= $b;$i++){
switch($b){
case '1': echo '<div class="inner">FIRST</div>';break;
case '2': echo '<div class="inner">SECOND SECOND</div>';break;
}
}
}
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。