Php 如何使用foreach循环来获取与条件相关的整个信息块:“引用”;大于“?”;?

Php 如何使用foreach循环来获取与条件相关的整个信息块:“引用”;大于“?”;?,php,Php,是否有人知道如何使用FOREACH循环来获取与条件相关的整个信息块:“大于”用户发布的数字(在本例中$metsq=$\u POST['metersq'];) 例如,在我发布的代码中,如果用户写入90,它应该只输出 颜色-蓝色 msq-100 布拉格市 我试过这段代码,但显然,我没有太多经验。 提前谢谢 <?php if(isset($_POST['button'])){ $houses = array( 'house1'=>array( 'c

是否有人知道如何使用FOREACH循环来获取与条件相关的整个信息块:“大于”用户发布的数字(在本例中$metsq=$\u 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" />

绿色的
蓝色的
红色的
平方米
布拉格
贝尔格莱德
伦敦

不要循环浏览房屋数据,只需循环浏览“msq”键即可:

foreach($houses as $house){
    if($house['msq']>=intval($metsq)){
        echo "msq - {$house['msq']} </br>";
    }
} 
foreach($house作为$house){
如果($house['msq']>=intval($metsq)){
回声“msq-{$house['msq']}
”; } }

此外,您可能需要确保它们是整数,而不需要嵌套的foreach循环。您只需在数组的每个house元素中比较
msq
键,如下所示:

foreach($houses as $house=>$data){
    if ($data['msq'] >= $metsq) {
        // found a matching house so do something with it
        var_dump($house, $data);
    }
}

看起来您希望将整个
house1
输出为一组键/值对

你很接近:

foreach($houses as $house=>$data){
    if( $data['msq'] >= $metsq ) {
        foreach( $data as $key=>$value ) {
            echo "$key - $value <br>";
        }
    }
}
foreach($house as$house=>$data){
如果($data['msq']>=$metsq){
foreach($key=>$value形式的数据){
回显“$key-$value
”; } } }

您遇到的问题是,您实际上只在特定键满足您的条件时才输出数据。但是你做了一些比较,比如
blue>=90
,这可能会产生意想不到的结果

如何将90与第一个数组关联?这听起来像是带有
=-->的if语句,只是一个注释,
$key
$value
未在示例中定义。这也会引发解析错误,因为您试图在标量值中调用数组键值。我已经为您更新了代码。@Nattan不客气。如果你的问题解决了,别忘了接受答案。:)