无法在两个php foreach循环中设置数组值

时间:2016-05-01 04:36:53

标签: php arrays

我已将两个数组定义为

$array1 = (8,10);

Array2是stdobjects数组,后来使用json decode,encode转换为下面的数据。 Php回声输出相同如下:

$array2 = Array
(
    [0] => Array
        (
            [id] => 6
        )

    [1] => Array
        (
            [id] => 8
        )

    [2] => Array
        (
            [id] => 10
        )

)

后来我创建了一个数组

foreach( $array2 as $value ) 
            {
                $valuesArray[] = array('',$value['id'],Input::get('date'),'0');   
            }

我要做的是将array1与valuesarray进行比较。如果$ value [' id']即第二个元素与array1中的任何元素匹配,我将$ nnn的第4个元素保存为1.如果它与任何元素都不匹配,我将保存它为0。 我的代码如下:

foreach ($valuesArray as $value2) 
        {
                    foreach ($array1 as $value1)
                    { 
                        if ($value2[1] == $value1) 
                            {$x = 1;} 
                        else 
                            {$x = 0;}
                    }
                $nnn[] = "('','".$value2[1]."','".Input::get('date')."','".$x."')";
                }   

            echo '<pre>',print_r($nnn,1),'</pre>';

我得到的输出是: 阵列

(
    [0] => ('','6','2016-04-25','0')
    [1] => ('','8','2016-04-25','0')
    [2] => ('','10','2016-04-25','1')
)

正确的输出应该是:

Array
(
    [0] => ('','6','2016-04-25','1')
    [1] => ('','8','2016-04-25','1')
    [2] => ('','10','2016-04-25','0')
)

1 个答案:

答案 0 :(得分:1)

试试这个:

$nnn = array();
foreach ($valuesArray as $value) {
    $x = (in_array($value[1], $array1))?1:0;
    $nnn[] = "('','".$value[1]."','".Input::get('date')."','{$x}')";
}