1

次のようなリストを想定します。

   $array = array('item1', 'item2', 'item3'); // etc...

次のようにカンマ区切りのリストを作成したいと思います。

implode(',', $array);

ただし、次のロジックを使用したいという複雑な点があります。アイテム インデックスが 10 の倍数の場合は、関数内の区切り記号',<br>'だけでなく、代わりに使用します。','implode()

PHPでこれを行う最良の方法は何ですか?

私はこのようにしましたが、もっと簡潔な方法があるのだろうか?

function getInventory($array, $title) { 
    $list = array();
    $length = count($array);

    $i = 1;

    foreach($array as $item) {
        $quantity = $item[1];

        if(!$quantity)
            $quantity = 1;

        $item_text = $quantity . $item[3];

        if($i > 9 && ($i % 10) == 0) {
            $item_text .= ',<br>';
        } elseif($i !== $length) {
            $item_text .= ',';
        }

        $list[] = $item_text;

        $i++;
    }

    $list = implode('', $list);

    $inventory = $title . $list . '<br>';
    return $inventory;
}
4

3 に答える 3

1

心配しているのが実際の配列キーではなく、配列内の位置である限り(つまり、ブレークは10の倍数であるすべてのインデックスではなく、10番目の要素ごとにある)、この方法でそれを行うことができます:

$foo = array();
for($n = 0; $n < 54; $n++) $foo[] = $n;
$parts = array_chunk($foo, 10);
for($n = 0; $n < count($parts); $n++){
    echo implode(',', $parts[$n]);
    if($n < count($parts) - 1) echo ',';
    echo "<br/>\n";
}
于 2013-06-13T20:48:22.317 に答える
0
$str = '';
$array = ....;
$i = 0;
foreach($array as $index)
    $str .= $array[$index].' ,'.($index % 10 ? ' ' : '<br/>');
$str = substr($str, 0, strlen($str) - 2); // trim the last two characters ', '
于 2013-06-13T20:49:08.677 に答える