2

私はこのような配列を持っています

$foreacharray = array(
    "model" => array ("samsung", "sony", "philips", "acer", "hp"),
    "qty" => array("3", "7", "5", "1", "8"),
);

私がやろうとしているのは foreach モデルで、その数量のロゴを描画するため、Samsung = 3、Sony = 7 などで 3 つの Sony ロゴと 7 つの Samsung ロゴを描画します。

私はこのようなものを思いついた

foreach ($foreacharray["model"] as $model)
{
    foreach($foreacharray["qty"] as $qty)
    {
        echo $model;
        echo '<br>';
    }
}

しかし、もちろん、配列エントリごとに名前をエコーアウトするだけなので、最終的には5つのsamsungsが印刷され、5つのsonyが印刷されます。

エントリ数ではなく qty 配列の値を使用するにはどうすればよいですか?

4

7 に答える 7

1

関数 を使用してこれを簡単にしてみませんarray_combineか?

http://www.php.net/manual/en/function.array-combine.php

例;

$newArray = array_combine($foreacharray[0], $foreacharray[1]);
var_dump($newArray);
// will output
array (
     "samsung" => 3,
     "sony" => 7,
     "philips" => 5,
     "acer" => 1, 
     "hp" => 8,
)

次に、すべての値を簡単に取得したり、そのように表示したりできます...

foreach($newArray as $key => $val) {
    echo $key . ' has a quantity of ' . $val . '.';
}

これで簡単になることを願っています。

于 2013-03-05T00:30:59.010 に答える
1

そもそも配列の生成を制御できる場合は、2 つの別個の配列を生成するよりも、モデルをキーとして数量を値として単一の配列を生成する方が適切です。

于 2013-03-05T00:35:50.113 に答える
0
// #1 using one for keys, another for values:
foreach(array_combine($foreacharray['model'],$foreacharray['qty']) as $model => $nr){
        var_dump($model,$nr);
}
// #2 map them with null:
foreach(array_map(null,$foreacharray['model'],$foreacharray['qty']) as $data){
        var_dump($data);
}
// #3 iterators!
$iterator = new MultipleIterator();
$iterator->attachIterator(new ArrayIterator($foreacharray['model']));
$iterator->attachIterator(new ArrayIterator($foreacharray['qty']));
foreach($iterator as $data){
        var_dump($data);
}

しかし、実際にこれをソースで変更するのが最善でしょう。

于 2013-03-05T00:32:23.597 に答える
0

$foreacharray["qty"]は 5 つの要素があります。これをforeachでループすると、すべての$foreacharray["model"]要素が 5 回出力されます。あなたのコードはどのように、どのように書かれたかです。

于 2013-03-05T00:43:47.997 に答える
0

代わりに array を使用して配列インデックスを繰り返します。次に例を示します。

for (i=0; i<count($foreacharray["model"]); i++)
{
    $model = $foreacharray["model"][i];
    $qty = $foreacharray["qty"][i];
    echo "$model: $qty";
}
于 2013-03-05T00:31:14.257 に答える
0

array_combineモデルが一意であると仮定すると、モデルをキーとして使用し、数量を値として使用するために使用できます。

$combined = array_combine($foreacharray['model'], $foreacharray['qty']);

foreach($combined as $model => $qty) {
    # …
}
于 2013-03-05T00:25:45.000 に答える
0

私はあなたがこれをやろうとしていると思います:

for( $i = 0, $e = count( $foreacharray["model"] ); $i < $e; ++ $i ) {
    echo $foreacharray["model"][$i] . ' = ' . $foreacharray["qty"][$i] . '<br />';
}

基本的に、単一のループは同じインデックスで両方の配列を参照します。

必要に応じて、次のように foreach を使用することもできます。

foreach( $foreacharray["model"] as $key => $model ) {
    echo $model . ' = ' . $foreacharray["qty"][$key] . '<br />';
}
于 2013-03-05T00:27:09.973 に答える