PHP:检查数组以查看值是否匹配,显示这些值

时间:2012-11-01 06:50:32

标签: php arrays multidimensional-array foreach

我从while循环生成一个数组,我想最终使用这个数组来显示数据。

while($row = $database->fetch(PDO::FETCH_ASSOC)
{

     $value_1 = $row['value_1'];
     $value_2 = $row['value_2'];

     $data[] = array("value_1"=>$value_1,"value_2"=>$value_2);

}

所以$ data []会显示使用print_r我会得到这样的结果:

Array
(
    [0] => Array
        (
            [value_1] => Hello World
            [value_2] => venus
        )

    [1] => Array
        (
            [value_1] => Hello World
            [value_2] => pluto
        )

    [2] => Array
        (
            [value_1] => Hello Moon
            [value_2] => Halloween
        )

)

我的问题是,如果我想获取所有数据但是合并相同的值,我将如何进行foreach循环或显示这样的方式?

Ex:

Hello World to venus pluto
Hello Moon to Halloween

我知道这些句子没有意义,但是你可以看到Hello World会被整合,我需要添加一个"到"在value_1value_2

之间

希望我的问题是可以理解的。

谢谢!

3 个答案:

答案 0 :(得分:2)

尝试这样的事情。 (未经测试)

$match = array();
foreach($data as $d) {
    if (isset($match[$d['value_1']])) {
        $match[$d['value_1']] = $match[$d['value_1']].' '.$d['value_2'] ;
    } else {
        $match[$d['value_1']] = $d['value_1']. ' to '. $d['value_2'];
    }
}

print_r($match);

答案 1 :(得分:0)

我认为首先你需要按如下方式创建新数组:

$new_array = array();
//consider your original array is $data
foreach($data as $row){
    if (array_key_exists($row['value_1'], $new_array)) {
       $new_array[$row['value_1']] = $new_array[$row['value_1']]. " ". 
                                     $row['value_2'];
    }
    else {
        $new_array[$row['value_1']] = $row['value_2'];
    }
}

然后通过迭代显示它:

foreach($new_array as $key => $value){
   echo $key ."to". $value;
}

答案 2 :(得分:-1)

foreach($data as $d) {

    echo $d['value_1'], ' to ', $d['value_2']; // this is if you want to echo the content

    // this code is to insert 'to' in the middle of value_1 and value_2
    $value_2 = $d['value_2'];

    unset($d['value_2']);

    array_push($d, "to", $value_2);

    unset($value_2);

}

此外,您不需要将$ row值分配给另一个值:

$value_1 = $row['value_1']; // remove this
$value_2 = $row['value_2']; // remove this

$data[] = array("value_1" => $row['value_1'], "value_2" => $row['value_2']);