1


基準に関連する情報のブロック全体を取得するために FOREACH ループを使用する方法を知っている人はいますか: ユーザーが投稿した数 (この場合は $metsq=$_POST['metersq'];)よりも「大きい」私が投稿したコードは、ユーザーが90と書いた場合、色のみを出力する必要があります
- 青
msq - 100
都市 - プラハ

私はこのコードを試しましたが、明らかに、あまり経験がありません。前もって感謝します!

<?php

if(isset($_POST['button'])){
    $houses = array(
        'house1'=>array(
        'color'=>'green',
        'msq'=>100,
        'city'=>'Prague'
    ),

        'house2'=>array(
        'color'=>'red',
        'msq'=>30,
        'city'=>'Belgrade'
    ),
        'house3'=>array(
        'color'=>'blue',
        'msq'=>50,
        'city'=>'London'
    ),
        'house4'=>array(
        'color'=>'blue',
        'msq'=>50,
        'city'=>'Belgrade'
    )
);

$col=$_POST['colors'];
$metsq=$_POST['metersq'];
$cit=$_POST['cities'];

foreach($houses as $house=>$data) {
    foreach($data as $key=>$value) {
        if($value>=$metsq) {
            echo "$key - $value </br>";
        }
    } 
} else {
    echo "Go, search";
}
?>


<form action="?" method="post">
<select name="colors" >

<option>green</option></br>
<option>blue</option></br>
<option>red</option></br>
</select>

<input type="number" name="metersq" id="metersq" maxlength="3" />m2</br>

<select name="cities">

<option>Prague</option></br>
<option>Belgrade</option></br>
<option>London</option></br>
</select>

<input type="submit" value="Find" name="button"id="button" />
4

3 に答える 3

1

house1キーと値のペアのセットとして全体を出力したいようです。

あなたはかなり近いです:

foreach($houses as $house=>$data){
    if( $data['msq'] >= $metsq ) {
        foreach( $data as $key=>$value ) {
            echo "$key - $value <br>";
        }
    }
}

あなたが抱えていた問題は、特定のキーが条件を満たしたときにのみ実際にデータを出力していたことです。しかし、あなたは予想外の結果をもたらす可能性のあるような比較を行ってblue >= 90いました。

于 2013-02-26T01:03:16.927 に答える
1

家のデータをループする代わりに、「msq」キーをループします。

foreach($houses as $house){
    if($house['msq']>=intval($metsq)){
        echo "msq - {$house['msq']} </br>";
    }
} 

また、 intvalを使用して、それらが整数であることを確認する必要がある場合があります。

于 2013-02-26T01:00:35.027 に答える
0

ネストされた foreach ループは必要ありません。msq次のように、配列の各家の要素のキーを比較するだけです。

foreach($houses as $house=>$data){
    if ($data['msq'] >= $metsq) {
        // found a matching house so do something with it
        var_dump($house, $data);
    }
}
于 2013-02-26T01:00:52.093 に答える