donglian6625 2015-05-22 10:16
浏览 18
已采纳

PHP - in_array不能按预期工作[重复]

This question already has an answer here:

Although I'm fairly experienced with PHP, I recently meet with this issue which driving me nuts.

    <?PHP
// This code is just basic example
$we_need = array(
    'Carrot',
    'Onion',
    'Milk',
    'Onion',
    'Potato'
); // Notice that Onion is on two places
$basket  = array(); // An empty basket
foreach ($we_need as $product) {
    // Add product to basket ONLY if it's not already there
    if (!in_array($product, $basket)) {
        $basket[] = $product;
    } else {
        echo "For debugging: Duplicate detected, so skipped.
";
    }
}
print_r($basket);
?>

What is wrong with this code? Why $basket array have duplicates at the end?
In my real program, $we_need is fetched from database, but it isn't multidimensional array nor new lines in values.
I know that I can use array_unique() for this approach, but I want to know where the problem is?

</div>
  • 写回答

1条回答 默认 最新

  • douer9399 2015-05-22 10:20
    关注

    There is a closing bracket missing.

    foreach ($we_need as $product) {
    
        // Add product to basket ONLY if it's not already there
        if (!in_array($product, $basket)) {
            $basket[] = $product;
        } else {
            echo "For debugging: Duplicate detected, so skipped.
    ";
        } // <<<------- here
    }
    

    Then you get:

    For debugging: Duplicate detected, so skipped. 
    Array ( [0] => Carrot [1] => Onion [2] => Milk [3] => Potato )
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 matlab中使用gurobi时报错
  • ¥15 WPF 大屏看板表格背景图片设置
  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂