Php 搜索数组

Php 搜索数组,php,Php,我得到两个数组 Array ( [0] => 1990 [1] => 1991 [2] => 1992 [3] => 1993 [4] => 1994 [5] => 1995 [6] => 1996 [7] => 1997 [8] => 1998 [9] => 1999 [10] => 2000 [11] => 2001

我得到两个数组

Array
(
    [0] => 1990
    [1] => 1991
    [2] => 1992
    [3] => 1993
    [4] => 1994
    [5] => 1995
    [6] => 1996
    [7] => 1997
    [8] => 1998
    [9] => 1999
    [10] => 2000
    [11] => 2001
    [12] => 2002
    [13] => 2003
    [14] => 2004
    [15] => 2005
    [16] => 2006
    [17] => 2007
    [18] => 2008
    [19] => 2009
    [20] => 2010
    [21] => 2011
    [22] => 2012
    [23] => 2013
)

并希望从第一个数组中的第二个数组中查找年度匹配项,并创建一个长度正好为的新数组第一个数组搜索应如下所示:

如果找到年份,则将设置一个新索引名称conv_值包含第二个数组索引中的值conv_值,如果未找到,则conv_值将为空

像这样

Array
(
    [0] => Array
        (
            [year] => 1990
            [conv_value] => 
        )

    [1] => Array
        (
            [year] => 1991
            [conv_value] => 
        )

    [2] => Array
        (
            [year] => 1992
            [conv_value] => 
        )

    [3] => Array
        (
            [year] => 1993
            [conv_value] => 
        )

    [4] => Array
        (
            [year] => 1995
            [conv_value] => 
        )

    [5] => Array
        (
            [year] => 1996
            [conv_value] => 
        )

    [6] => Array
        (
            [year] => 1997
            [conv_value] => 
        )

    [7] => Array
        (
            [year] => 1998
            [conv_value] => 
        )

    [8] => Array
        (
            [year] => 1999
            [conv_value] => 
        )

    [9] => Array
        (
            [year] => 2000
            [conv_value] => 55
        )

    [10] => Array
        (
            [year] => 2001
            [conv_value] => 
        )

    [11] => Array
        (
            [year] => 2002
            [conv_value] => 
        )

    [12] => Array
        (
            [year] => 2003
            [conv_value] => 
        )

    [13] => Array
        (
            [year] => 2004
            [conv_value] => 95
        )

    [14] => Array
        (
            [year] => 2005
            [conv_value] => 
        )

    [15] => Array
        (
            [year] => 2006
            [conv_value] => 
        )

    [16] => Array
        (
            [year] => 2007
            [conv_value] => 
        )

    [17] => Array
        (
            [year] => 2008
            [conv_value] => 
        )

    [18] => Array
        (
            [year] => 2009
            [conv_value] => 
        )

    [19] => Array
        (
            [year] => 2010
            [conv_value] => 
        )
    [20] => Array
        (
            [year] => 2011
            [conv_value] => 80
        )

    [21] => Array
        (
            [year] => 2012
            [conv_value] => 95
        )

    [22] => Array
        (
            [year] => 2013
            [conv_value] => 
        )

    )
我写了剧本

for ( $y = 0; $y < sizeof($cc); $y++ ){
    for ( $z = 0; $z < sizeof($years); $z++ ){
        if ($cc[$y]['year'] == $years[$z]) {
            echo 'Hay<br>';
        }else{
            echo 'Nahee hay<br>';
        }
    }
}
for($y=0;$y”;
}否则{
回音“Nahee hay
”; } } }
但是没有得到结果

我犯错误的地方。?

尝试在数组中使用

if (in_array($cc[$y]['year'], $years)) {

这是一段很长的代码,但我编写了它&它解决了我的问题:

<?php
                // all years                
                for ($i = 1990; $i <= (date('Y')+1); $i++){
                    $years[] = $i;
                }

                // db years
                $i=0;
                foreach ( $cur_conv as $key ){
                    $cc[$i]['year'] = $key['year'];
                    $cc[$i]['conv_value'] = $key['conv_value'];
                    $i++;
                }

                // make array which contain only years
                for($i=0; $i<sizeof($cc); $i++){
                    $db_years[] = $cc[$i]['year'];
                }

                // finally search local array in db array
                for($j=0; $j<count($years); $j++)
                {
                    $index = array_search($years[$j], $db_years);

                    if ( $index === FALSE )
                    {
                        $new_arr[$j]['year'] = $years[$j];
                        $new_arr[$j]['conv_value'] = '';

                    } else {

                        $new_arr[$j]['year'] = $cc[$index]['year'];
                        $new_arr[$j]['conv_value'] = $cc[$index]['conv_value'];
                    }
                }
                ?>

作为替代方案,我建议
设置
isset
超过
在数组中
(如果任何数组很大,速度差异可能会很大)-只需要
$flip\u years=array\u flip($years)
首先。。。
<?php
                // all years                
                for ($i = 1990; $i <= (date('Y')+1); $i++){
                    $years[] = $i;
                }

                // db years
                $i=0;
                foreach ( $cur_conv as $key ){
                    $cc[$i]['year'] = $key['year'];
                    $cc[$i]['conv_value'] = $key['conv_value'];
                    $i++;
                }

                // make array which contain only years
                for($i=0; $i<sizeof($cc); $i++){
                    $db_years[] = $cc[$i]['year'];
                }

                // finally search local array in db array
                for($j=0; $j<count($years); $j++)
                {
                    $index = array_search($years[$j], $db_years);

                    if ( $index === FALSE )
                    {
                        $new_arr[$j]['year'] = $years[$j];
                        $new_arr[$j]['conv_value'] = '';

                    } else {

                        $new_arr[$j]['year'] = $cc[$index]['year'];
                        $new_arr[$j]['conv_value'] = $cc[$index]['conv_value'];
                    }
                }
                ?>