1

重複の可能性:
PHP多次元配列が機能しないのはなぜですか?

更新しました

URLを追加できるようにしたいのですcategory.php?filter=Blue and greencategory.php?filter=Red、配列リストにそれらの値の色のみを表示させたいのですが、そうでない場合はすべての配列がリストされます。

<?php

$array = array(
"1" => array("red", "black", "blue and green"),
"2" => array("orange"),
"3" => array("silver", "gold"),
"4" => array("pruple"),
"5" => array("pink", "yellow"),
"6" => array("black")
);
# no more more edits, loop begins below
# limit the the rows by 3 and break
$data = array_chunk($array, 3);
/*#######################################
 No more edits DO NOT EDIT FURTHER
#######################################*/?>
<?php
foreach ($array as $data):
?>

<div class="item" id="item_<?= $row ?>">
    <div class="itemdata">
    <?php #foreach ($array as $row): ?>
    <?php foreach ($data as $row): ?>
        <?php if (in_array($row, explode(' and ', $_GET['filter']))): ?>
            Product Link = <?=$row?> 
        <?php endif; ?>
    <?php endforeach ?>
    </div>
</div>
<?php endforeach ?>

以下の投稿に従ってコードを更新しました。これまでのところ、2つのアイテムのみをループします-URLには何もfilter適用されません

4

4 に答える 4

3

まず、あなたの配列は正しくないようです:

# list of product Ids and their assoc colours
$array = array(
"1" => "red", "black", "blue and green",
"2" => "orange",
"3" => "silver", "gold",
"4" => "pruple",
"5" => "pink", "yellow",
"6" => "black"
);

製品 1 が 3 色の場合、おそらく次のようになります。

array (
    1 => array("red", "black", "blue"),
    2 => array("orange"),

于 2012-10-01T09:54:11.110 に答える
1

配列とループを修正し、フィルターを追加しました。

http://codepad.org/YnafFVP4

array_chunk多次元配列が壊れるので、これを使用できません。何を制限したいかを説明していただければ、それもお手伝いできます。

于 2012-10-01T10:06:04.907 に答える
0

まず、配列が正しくありません。それは次のようでなければなりません:

$array = array ("1" => array("red", "black", "blue"),
    //etc
)

第二に、あなたのforeachは正しくないようです。

Foreachは次のようになります。

foreach($array as $key => $value)

また

foreach($array as $value)

これにより、次のようになります。

<?php foreach ($array as $data): ?>
    // ...
    <?php foreach ($data as $row): ?>
        <a href="/products/<?=$row?>"><img src="/products/<?=$row?>.jpg" /></a>
    <?php endforeach ?>
    //...
<?php endforeach ?>

そして、あなたはあなたの2番目の質問に答えます:

[]PHPでは、変数名に追加すると、URLで配列を渡すことができます。

/?color[]=blue&color[]=green

そしてそれを手に入れよう$_GET['color[]'];

そして、一般的なヒントとして、との{}代わりにブロックを使用してください。このようにして、IFELSEコンストラクトも実行します。:endforeach

<?php
    if($a == $b) {

    } else {

    }
?>
于 2012-10-01T10:04:22.110 に答える
0

それがあなたの配列がどのように見えるかです

$array = array(
"1" => array("red", "black", "blue and green"),
"2" => "orange",
"3" =>  array("silver", "gold"),
"4" => "pruple",
"5" => " array(pink", "yellow"),
"6" => "black"
);
于 2012-10-01T09:57:27.847 に答える